我认为对于熟悉Indy的人来说,这是一个简单的问题。我使用的是Delphi2010和Indy10,我正在尝试访问SSL服务。我想如果我能让Fiddler看到我的HTTP流量,事情会容易得多。我在StackOverflow上看到的帖子表明,让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;编辑:如果我不使用Fiddler的代理,并在Wireshark运行时单击按钮,我会在Wireshark中获得此流量。

发布于 2012-02-11 08:00:46
通过设置ProxyParams,可以轻松地将Indy设置为使用代理fiddler提供的代理:
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;你应该能够在Fiddler中看到所有的流量。
编辑:如果这不起作用,您可以添加一个TIdLogDebug组件,并将其添加为拦截器(就像您在问题中所做的那样)。OnReceive和OnSend事件包含发送和接收的完整标头以及回复数据:
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;https://stackoverflow.com/questions/9236400
复制相似问题