Bild Download WinHTTP

  • Hallo,
    ich möchte mit WINHTTP anfangen und habe nun folgendes:

    Spoiler anzeigen
    [autoit]

    #include <WinHTTP.au3>

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

    $HttpOpen = _WinHttpOpen("test")
    $HttpConnect = _WinHttpConnect($HttpOpen, "upload.wikimedia.org")
    $HttpOpenRequest = _WinHttpOpenRequest($HttpConnect, "GET", "/wikipedia/commons/5/57/Lorem_Ipsum_Helvetica.png", "HTTP/1.1", "http://upload.wikimedia.org/")

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

    _WinHttpSendRequest($HttpOpenRequest)
    _WinHttpReceiveResponse($HttpOpenRequest)

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

    If _WinHttpQueryDataAvailable($HttpOpenRequest) Then
    $header = _WinHttpQueryHeaders($HttpOpenRequest)
    EndIf

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

    Local $data = ""
    Do
    $data &= _WinHttpReadData($HttpOpenRequest,1)
    Until @error

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

    $fOpen = FileOpen(@ScriptDir & "\LoremIpsum.png", 26)
    FileWrite($fOpen,$data)

    [/autoit]


    Jedoch ist das Bild nicht richtig runtergeladen worden, wo liegt denn da mein Fehler?

  • Da ein Bild nicht aus Text, sondern aus binäre Daten besteht, musst du ReadData im Binärmodus aufrufen.

    [autoit]

    Local $data = Binary("")
    While 1
    $chunk = _WinHttpReadData($HttpOpenRequest, 2) ; Binär!
    If Not @extended Then ExitLoop ; @extended = Länge der Rückgabe
    $data &= $chunk
    WEnd

    [/autoit]