Я пытаюсь получить доступ к URL-адресу в Delphi с помощью инструмента TIdHTTP Indy Tool. Я сделал следующее:
- Установите Accept Cookies = True.
- Установите Handle Redirect = True
- Добавлен TIdCookieManager
http://sms.saicomvoice.co.za:8900/saicom/index.php?action=login&username=SOME_USERNAME&password=SOME_PASSWORD&login=login
Запрос на публикацию работает и возвращает HTML. Проблема в том, что он не возвращает правильный HTML (см. Изображение ниже).
Если я возьму этот URL-адрес (введите имя пользователя и пароль) и вставлю его в свой браузер точно так же, как мое приложение Delphi, тогда войдет на правильный веб-сайт. Но как только я сделаю это с помощью своего приложения Delphi, оно вернет HTML-код для страницы входа.
Предполагается, что запрос должен выполняться своевременно в TTimer в Delphi.
Может ли кто-нибудь привести меня к правильному пути или указать направление, в котором я могу решить эту проблему?
Дополнительная информация
- WriteStatus - это процедура, которая записывает вывод в TListBox.
BtnEndPoll Останавливает таймер
Procedure TfrmMain.TmrPollTimer(Sender: TObject); Var ResultHTML: String; DataToSend: TStringList; Begin Inc(Cycle, 1); LstStatus.Items.Add(''); LstStatus.Items.Add('=================='); WriteStatus('Cycle : ' + IntToStr(Cycle)); LstStatus.Items.Add('=================='); LstStatus.Items.Add(''); DataToSend := TStringList.Create; Try WriteStatus('Setting Request Content Type'); HttpRequest.Request.ContentType := 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8'; WriteStatus('Setting Request User Agent'); HttpRequest.Request.UserAgent := 'Mozilla/5.0 (Windows NT 5.1; rv:2.0b8) Gecko/20100101 Firefox/4.0b8'; WriteStatus('Posting Request'); ResultHTML := HttpRequest.Post(FPostToURL, DataToSend); WriteStatus('Writing Result'); FLastResponse := ResultHTML; WriteStatus('Cycle : ' + IntToStr(Cycle) + ' -- FINISHED'); LstStatus.Items.Add(''); Except On E: Exception Do Begin MakeNextEntryError := True; WriteStatus('An Error Occured: ' + E.Message); If ChkExceptionStop.Checked Then Begin BtnEndPoll.Click; WriteStatus('Stopping Poll Un Expectedly!'); End; End; End; End;
* Пример изображения *