Как моя программа может войти на веб-сайт программно с помощью Indy? - PullRequest
2 голосов
/ 21 февраля 2011

Я пытаюсь войти на fileserve.com из моего приложения Delphi.

Я использовал дополнение LiveHTTPHeader Firefox, чтобы увидеть данные HTTP-сообщений.Я нашел

& autoLogin = on & recaptcha_response_field = & recaptcha_challenge_field = & recaptcha_shortencode_field = & loginFormSubmit = Login

Я пытался в своем приложении, например так:

Str := TStringList.Create;
Str.Add('loginUserName='+edit1.Text);
Str.Add('loginUserPassword='+edit2.Text);
Str.Add('autoLogin=on');
Str.Add('recaptcha_response_field=');
Str.Add('recaptcha_challenge_field=');
Str.Add('recaptcha_shortencode_field=');
Str.Add('loginFormSubmit=Login');  
s:= IdHTTP1.Post('http://www.fileserve.com/login.php', Str);
FreeAndNil(str);
s1 := IdHTTP1.Get('http://www.fileserve.com/dashboard.php');
memo1.lines.add(s1);
1011

1011моя заметка, она не дает данные после того, как я вошел в систему. Он просто отображает источник основного сайта.Почему он не распознает, что я вошел в систему?(Я использовал рабочий идентификатор и пароль при тестировании.)

Я использую Delphi 7 и Indy 9;Для свойства IdHTTP.HandleRedirect установлено значение true.

1 Ответ

4 голосов
/ 21 февраля 2011

Сайт, на который вы входите, вероятно, отправляет cookie в ответ на запрос входа. Вам необходимо запомнить этот файл cookie и отправить его обратно во время всех последующих запросов. У Indy должен быть какой-то объект TIdCookieManager, который вы можете подключить к своему TIdHTTP объекту, чтобы он автоматически запоминал файлы cookie.

...