TIdHTTP Indy ツールを使用して、Delphi で URL にアクセスしようとしています。私は次のことをしました:
- Cookie を受け入れる = True に設定します。
- ハンドル リダイレクトを設定 = True
- 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アプリケーションとまったく同じで、正しいWebサイトにログインします。しかし、Delphi アプリでそれを行うとすぐに、ログイン ページの HTML が返されます。
リクエストは、Delphi の 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;
※画像例※