TCPRecv liefert keinen HTTP-Header

  • Hallo liebe Mitglieder,
    ich versuche gerade ein Anfrage an einen Webserver zu tätigen und die Anfrage auszuwerten. Letzteres funktioniert leider nicht zureichend im Moment. Folgendes Problem:
    Mit TCPSend() sende ich eine komplette HTTP-Anfrage (GET oder POST) und erhalte dann via TCPRecv eine Antwort. Leider fehlt in dieser Antwort der HTTP-Header,so dass ich verschiedene Zustände nicht überprüfen kann. Ein praktisches Beispiel:
    Ich sende folgendes GET mithilfe eines vorher mit TCPConnect() erzeugten Sockets per TCPSend():

    Daraufhin erhalte ich dann leider mit TCPRecv nicht die Antwort HTTP/1.x 200 OK sondern direkt den HTML-Code der angeforderten Seite. Was muss ich tuen, das ich von der angeforderten Seite ebenfalls den Header erhalte?

    Danke im voraus
    Gruß
    Dr.Miles

  • Spoiler anzeigen
    [autoit]

    TCPStartup()
    $1 = TCPNameToIP("www.google.de")
    $socked = TCPConnect($1,80)

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

    $sPost = "quatsch"
    $header = "POST /index.html HTTP/1.1" & @CRLF & _
    "Host: google.de" & @CRLF & _
    "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5" & @CRLF & _
    "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" & @CRLF & _
    "Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3" & @CRLF & _
    "Accept-Encoding: gzip,deflate" & @CRLF & _
    "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7" & @CRLF & _
    "Keep-Alive: 300" & @CRLF & _
    "Connection: keep-alive" & @CRLF & _
    "Content-Type: application/x-www-form-urlencoded" & @CRLF & _
    "Referer: http://www.google.de" & @CRLF & _
    "Content-Length: "& StringLen($sPost) & @CRLF & @CRLF & $sPost

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

    TCPSend($socked,$header)

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

    ;MsgBox(64,"0",$1)
    ;MsgBox(64,"1",$header)
    ;MsgBox(64,"1.1",StringLen($sPost))
    $timer=TimerInit()
    While 1
    $sRecv = TCPRecv($socked, 1024)
    If $sRecv <> '' Then
    While 1
    $sRecv &= TCPRecv($socked, 1024)
    If @error or TimerDiff($timer)>10000 Then ExitLoop 2
    ;MsgBox(64,"2",$sRecv)
    WEnd
    EndIf
    WEnd

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

    FileWrite("TCP.html",$sRecv)

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

    TCPShutdown()

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

    Bei dieser unsinnigen google abfrage erhalte ich dies:

    Spoiler anzeigen