WinHttp Headers vom Request

  • Hallo,

    ich benutze die WinHttp-Lib und kriege es nicht hin, die Headers eines Requests auszulesen. Mit der Funktion _WinHttpQueryHeaders kriege ich nur die Headers der Serverantwort auf die Anfrage. Ich will aber irgendwie die Headers der Anfrage auslesen. Hoffe einer kann mir helfen!

    Danke!

    Einmal editiert, zuletzt von DarkManX (11. März 2012 um 09:09)

  • Ein Request ist die Antwort des Servers.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Mit der Funktion _WinHttpQueryHeaders kriege ich nur die Headers der Serverantwort auf die Anfrage. Ich will aber irgendwie die Headers der Anfrage auslesen. Hoffe einer kann mir helfen!

    ? Weiß nicht genau was du willst, hier mal ein Beispiel:

    Spoiler anzeigen
    [autoit]

    #include <WinHTTP.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $hw_open = _WinHttpOpen("AutoIt")
    $hw_connect = _WinHttpConnect($hw_open,"autoit.de" )
    $h_openRequest = _WinHttpOpenRequest($hw_connect, "GET", "/", "HTTP/1.1")
    _WinHttpSendRequest($h_openRequest)
    _WinHttpReceiveResponse($h_openRequest)

    [/autoit] [autoit][/autoit] [autoit]

    $header = _WinHttpQueryHeaders($h_openRequest)
    MsgBox(0, "Header", $header)
    If _WinHttpQueryDataAvailable($h_openRequest) Then
    Local $data=""
    Do
    $data&=_WinHttpReadData($h_openRequest)
    Until @error<>0
    MsgBox(0, "Body", $data)
    ClipPut($data) ; Kannst du in eine html datei kopieren und ausführen
    EndIf

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    _WinHttpCloseHandle($h_openRequest)
    _WinHttpCloseHandle($hw_connect)
    _WinHttpCloseHandle($hw_open)

    [/autoit]

    Ich glaub dir geht es aber darum, wo man überhaupt das Packet her bekommt das man schicken muss?
    Das bekommt man z.B. mit dem Addon Live HTTP Headers für Firefox.

    Gruß Greek

  • Ein Request ist die Antwort des Servers.


    Eine RESPONSE ist die Antwort des Servers!

    Ich will aber irgendwie die Headers der Anfrage auslesen.


    WinHTTP-Intern kenne ich dafür keine Möglichkeit.
    Mein Tipp: Benutze einen HTTP/HTTPS-Sniffer, wie "Fiddler2" dafür, damit funktioniert es problemlos. Du darfst nur nicht vergessen, den WinHTTP-Traffic über Fiddler zu leiten, also Fiddler als Proxy für WinHTTP zu setzen. ( Standardmäßig nutzt Fiddler glaube ich 127.0.0.1:8888 )

  • SEuBo hat mich - glaube ich - richtig verstanden, die anderen leider nicht. Um es für alle nochmal verständlicher auszudrücken:
    Die Antwort eines Servers auf eine Anfrage hat Headers, die kann man mit _WinHttpQueryHeaders auslesen. Die Anfrage selbst hat auch Headers, die man selber erstellt. Jetzt wollte ich diese Headers der Anfrage auslesen, da es bei mir nicht richtig funktioniert und die Headers dynamisch erstellt werden. Damit will ich gucken, was mein Script denn so für Headers erstellt und wo ggf der Fehler liegt.

    Ist ja ziemlich blöd die Anfrage über ein Proxy zu schicken um die Headers rauszukriegen. Es muss doch eig ne Möglichkeit geben, diese irgendwie auszulesen. Ein RequestHandle via WinHttp ist ja offenbar die Rückgabe der DllCall()-Funktion zurück. Der Rückgabetyp ist aber anscheinend polymorph. Habe da nicht so richtig durchgeblickt was denn dll's sind, habe sonst immer nur Webseiten programmiert. Worauf verweist nun dieser RequestHandle? ?(

    Grüße

    2 Mal editiert, zuletzt von DarkManX (10. März 2012 um 23:14)

  • Worauf verweist nun dieser RequestHandle?


    Dieser Request-Handle ist ein sogenannter hInternet-Handle. Und ja, es gibt mit Sicherheit eine Möglichkeit, diese Request Headers auszulesen. Nur ist das von Microsoft wohl nicht vorgesehen, und deswegen auch nicht über die integrierten Funktionen der WinHTTP API zu lösen. Die Möglichkeit, einen Sniffer zu verwenden ist mit Sicherheit die unkomplizierteste ;)