TCPRecv von Webserver

  • Hat nur indirekt mit Autoit zu tuen.

    Ich sende mit TCPSend einen Post an eine Webseite um dort Daten über ein PHP-Script in die MySQL einzutragen. Mit TCPRecv möchte ich dann Auswerten ob die Daten eingetragen wurde. Auf meinem Server kommt z.b. das hier zurück:

    Mein Frage ist nun ob die Headerinformation also diese hier:

    HTTP
    HTTP/1.1 200 OK
    Date: Sun, 21 Feb 2010 01:46:55 GMT
    Server: Apache
    X-Powered-By: PHP/5.2.9
    Content-Length: 19
    Keep-Alive: timeout=1, max=100
    Connection: Keep-Alive
    Content-Type: text/html

    die zurück kommen immer acht Zeilen sind oder ob das von Server zu Server unterschiedlich ist.

    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.

  • Hi,
    die Anzahl der Zeilen kann unterschiedlich sein, je nachdem welche Infos der Server rausgibt.
    Allerdings steht zwischen den Headerzeilen und den Daten IMMEReine Leerzeile, du musst also nur nach der Leerzeile suchen, alles hinter dieser Leerzeile sind die Daten...

  • Alles klar danke, dann pack ich den Text einfach in eindeutige Tags zum auslesen.

    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.

  • Mal ein Beispiel:
    Das Bild der "Uhr" vor dem Datum, auf der AutoIt-HP abfragen:

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    ;Idee: http://www.autoit.de/index.php?page…3288#post123288

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

    TCPStartup()
    $iSocket = TCPConnect(TCPNameToIP("www.autoit.de"), 80)

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

    $header = "GET /wcf/images/autoit_logo.gif HTTP/1.1" & @CRLF & _
    "Host: autoit.de" & @CRLF & _
    "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 GTB6" & @CRLF & _
    "Keep-Alive: 300" & @CRLF & _
    "Connection: keep-alive" & @CRLF & @CRLF

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

    TCPSend($iSocket, $header)

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

    While 1
    $sRecv = TCPRecv($iSocket, 1024)
    If $sRecv <> '' Then
    While 1
    $sRecv &= TCPRecv($iSocket, 1024)
    If @error Then ExitLoop 2
    WEnd
    EndIf
    WEnd

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

    $srecv=stringreplace($srecv,"0x","") ;alle 1024 langen strings wieder aufdröseln
    $data=stringsplit(binarytostring("0x"&$sRecv),@crlf&@crlf,3) ;die Daten lesbar machen

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

    _arraydisplay($data,"Header und Daten")
    $Header=stringsplit($data[0],@crlf,3) ;Header von den Daten trennen
    _arraydisplay($header,"Header") ;header
    Msgbox(0,"Daten",stringtobinary($data[1])) ;die GIF-Daten im Byteformat

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