2012-02-10 3 views
4

저는 이것이 인디에 익숙한 사람에게 쉬운 질문이라고 생각합니다. 저는 Delphi 2010과 Indy 10을 사용하고 있습니다. 저는 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; 

편집 :

여기에 지금까지 내 코드는 내가 피들러에 대한 프록시를 사용하고 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

관련 문제