我想使用TIdHTTP Indy工具訪問Delphi中的URL。 我也做了以下內容:URL不返回數據Delphi Indy TIdHttp
- 設置接受Cookie =真
- 集處理重定向=真
- 增加了TIdCookieManager
http://sms.saicomvoice.co.za:8900/saicom/index.php?action=login&username=SOME_USERNAME&password=SOME_PASSWORD&login=login
POST請求的作品,並返回HTML。問題是它不會返回正確的HTML(請參閱下圖)。
如果我將該URL(填入用戶名和密碼)並粘貼到我的瀏覽器中完全相同我的Delphi應用程序將登錄到正確的網站。但只要我用Delphi應用程序執行它,它就會返回登錄頁面的HTML。
該請求應該在德爾福的TTimer中定時執行。
任何人都可以讓我走向正確的道路,或者指引我如何解決這個問題?
一些附加信息
- 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;
*圖像示例*
您能否將HTML的相關部分作爲文本加入? – mjn