3

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;
    

※画像例※

HTML出力

4

1 に答える 1