2012-02-10 8 views
4

これはIndyに詳しい人にとっては簡単な質問だと思います。私はDelphi 2010とIndy 10を使用しています。私はSSL Webサービスにアクセスするために地面から降ろそうとしています。 FiddlerにHTTPトラフィックを表示させることができればもっと簡単になると思います。私はStackOverflowの投稿を見てきました。これは、あなたのIndyトラフィックを見るためにはFiddlerを得るのは大したことではなく、ポートを動作させるように設定しなければならないということです。私の質問はどうやってそれをするのですか?フィンドラーでIndyトラフィックを見る

procedure TForm1.Button1Click(Sender: TObject); 
var slRequest: TStringList; 
    sResponse, 
    sFileName: String; 
    lHTTP: TIdHTTP; 
    lIOHandler: TIdSSLIOHandlerSocketOpenSSL; 
begin 
    sFileName := 'Ping.xml'; 
    slRequest := TStringList.Create; 
    try 
    slRequest.LoadFromFile(sFileName); 
    lHTTP := TIdHTTP.Create(nil); 
    lHTTP.Intercept := IdLogDebug1; 
    lIOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil); 
    try 
     lHTTP.IOHandler := lIOHandler; 
     sResponse := lHTTP.Post('https://FSETTESTPROD.EDD.CA.GOV/fsetservice', slRequest); 
     Memo1.Lines.Text := sResponse; 
    finally 
     lIOHandler.Free; 
    end; 
    finally 
    slRequest.Free; 
    end; 
end; 

編集:

ここではこれまでのところ、私のコードは、私がバイオリンのためのプロキシを使用し、Wiresharkのは、実行中にボタンをクリックしないと、私はWiresharkの中に、このトラフィックを取得します。 enter image description here

答えて

10

あなたは、プロキシシオマネキがProxyParamsを設定することで簡単に提供して使用するようにインディを設定することができます。

try 
    lHTTP.IOHandler := lIOHandler; 
    lHTTP.ProxyParams.ProxyServer := '127.0.0.1'; 
    lHTTP.ProxyParams.ProxyPort := 8888; 
    sResponse := lHTTP.Post('<URL>', slRequest); 
    Memo1.Lines.Text := sResponse; 
finally 
    lIOHandler.Free; 
end; 

あなたはその後、フィドラーですべてのトラフィックを見ることができるはずです。

編集:それでも問題が解決しない場合は、TIdLogDebugコンポーネントを追加して、質問にしたようにインターセプターとして追加することができます。 OnReceiveとOnSendイベントは完全なヘッダが送信され、回答データとしてaswell受け含まれています。私はそれがそのように動作するはずと思っ

procedure TForm10.captureTraffic(ASender: TIdConnectionIntercept; 
    var ABuffer: TArray<Byte>); 
var 
    i: Integer; 
    s: String; 
begin 
    s := ''; 

    for i := Low(ABuffer) to High(ABuffer) do 
    s := s + chr(ABuffer[i]); 

    Memo1.Lines.Add(s); 
end; 
+0

が、私はそれは「バイオリン弾きを言うことを行うとき、私はバイオリン弾きのエラーメッセージが表示されますセッション#2のプロトコル違反を検出しましたContent-Length mismatch:要求ヘッダーが2,208バイトを示しましたが、クライアントは0バイトを送信しました。 "投稿前にslRequestをチェックすると、その中にデータがあります。 – jrodenhi

+0

私のプログラムがPost行でフリーズしていると忘れてしまった。プログラムを終了すると、エラーメッセージが表示されます。 – jrodenhi

+0

あなたのマシンにOpenSSLがインストールされていますか? Indyはバイナリを必要とします。また、元の質問のページが404エラーを返します。 – Chris

関連する問題