Срочно, помогите с авторизацией на Твиттере. Вот мой код, но он при отправке на https постоянно возвращает 301. Code: token := HTTP.Get('http://twitter.com'); Delete(token, 1, Pos('authenticity_token', token) + 40); token := Copy(token, 1, Pos('"', token) - 1); PostData.Add('authenticity_token=' + token); PostData.Add('return_to_ssl=false'); PostData.Add('redirect_after_login=/'); PostData.Add('session[username_or_email]=' + login); PostData.Add('session[password]=' + pass); HTTP.Post('https://twitter.com/sessions', PostData, ResponseData); И как назло, толи со снифером что-то толи что. Но при отправке на https я не вижу своего запроса... Т.е даже не знаю, что я не так отправляю..
Список кодов состояния HTTP Можно установить прокси в настройках - например fiddler ну или хардкорный вариант - Echo Mirage.
Коды я и так знаю. Поставил fiddler, и все равно https запрос не показывается. Вот еще кусок кода забыл вчера показать Code: HTTP := TIdHTTP.Create(nil); Handler := TIdSSLIOHandlerSocketOpenSSL.Create(nil); HTTP.IOHandler := Handler;
IdCookieManager подключен (AllowCookie = true)? пробовал в http.request userAgent менять? или может инди старая?
1. При POST запросе, IdHTTP в поле Host, указывал еще и порт (serverort). В моем случае это вызывало проблемы. В IdHTTP.Pas комментим как тут. Code: if FURI.Port <> IntToStr(IdPORT_HTTP) then begin ARequest.Host := FURI.Host;// + ':' + FURI.Port; {do not localize} end else begin ARequest.Host := FURI.Host; end; 2. Настройки IdHTTP Code: HTTP := TIdHTTP.Create(nil); Handler := TIdSSLIOHandlerSocketOpenSSL.Create(nil); Handler.SSLOptions.Method := sslvSSLv23; HTTP.IOHandler := Handler; HTTP.ProtocolVersion := pv1_0; HTTP.HttpOptions := [hoKeepOrigProtocol,hoInProcessAuth]; Ну а https запросы у меня до сих пор не отображаются ))
Появилась еще одна проблема Есть такой кусок кода : Code: repeat Result := True; try HTTP.Post('https://twitter.com/sessions', PostData, ResponseData); except cs.Enter; Form1.PGetSocksProxy(sock, handler); cs.Leave; Result := False; end; until Result = True; Проблема в том, что после нескольких плохих проксей подряд, запросы перестают отправляется вообще(т.е моментально Connection Closed Gracefully ), хотя прокси меняются каждый раз. Связка для работы с сетью выглядит так : Code: HTTP := TIdHTTP.Create(nil); HTTP.ProtocolVersion := pv1_0; HTTP.HttpOptions := [hoKeepOrigProtocol,hoInProcessAuth]; Handler := TIdSSLIOHandlerSocketOpenSSL.Create(nil); Handler.SSLOptions.Method := sslvSSLv3; HTTP.IOHandler := Handler; sock := TIdSocksInfo.Create; sock.Authentication := saNoAuthentication; sock.Version := svSocks5;
Похоже на то, что твой провайдер закрывает одновременные подключения. Т.е. после "плохих" проксей соединение не закрывается и еще висит. Это только предположение. Чтобы отображались https в фиддлере включи в опциях галочку. Или могу посоветовать burp suite proxy, если фиддлер по каким-то причинам не пашет.
Eicca, Галочку естественно включал..) Да не в том суть, у меня запросы уже правильно все написаны. = ) А вот насчет соединения хз.. наверное просто при возникновении такой траблы буду убивать поток, и запускать новый... P.S Еще вопрос. По какой причине поток может сам по себе завершиться? Просто замечал, что поток сам по себе умирает во время выполнения..