我正在尝试使用TIdHTTP Indy工具在Delphi中访问URL。我已经完成了以下操作:
- 设置Accept Cookies = True - 设置Handle Redirect = True - 添加TIdCookieManager Post请求有效并返回HTML。问题是它没有返回正确的HTML(请参见下面的图像)。
如果将该URL(填写用户名和密码)粘贴到浏览器中,与我的Delphi应用程序完全相同,则可以正确登录网站。但是,一旦我在Delphi应用程序中执行此操作,它就会返回登录页面的HTML。
请求应该及时在Delphi的TTimer中执行。
有人能否指导我走上正确的道路或指导我如何解决这个问题?
一些附加信息:
- 设置Accept Cookies = True - 设置Handle Redirect = True - 添加TIdCookieManager Post请求有效并返回HTML。问题是它没有返回正确的HTML(请参见下面的图像)。
如果将该URL(填写用户名和密码)粘贴到浏览器中,与我的Delphi应用程序完全相同,则可以正确登录网站。但是,一旦我在Delphi应用程序中执行此操作,它就会返回登录页面的HTML。
请求应该及时在Delphi的TTimer中执行。
有人能否指导我走上正确的道路或指导我如何解决这个问题?
一些附加信息:
- WriteStatus is a Procedure That writes output to a TListBox
BtnEndPoll Stops the timer
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;
* Image Example *