Ich greife mit der WinHTTP.au3 UDF auf ein paar API zu und lange Dateien runter (bei denen man sich per _POST anmelden muss).
Nur habe ich festgestellt, dass wenn der Seitenaufbau mehr als 30s benötigt gar kein Inhalt zurück gegeben wird!
Ich habe das gelogt: alle Verbindungen die <30s sind funktionieren, alle die >=30s sind funktionieren nicht.
Genauer, wenn _WinHttpSendRequest() 30s aktiv ist, kommt kein Inhalt an. Ein Header wird gesendet.
Wieso wird die Verbindung nach 30s abgebrochen?
Wie kann ich das verhindern?
Meine Beispiel Funktion
#include "WinHTTP.au3"
[/autoit] [autoit][/autoit] [autoit]$sIhnhalt = crys_post("http://www.example.com/grosse_datei.zip", "name=name&pw=pw")
[/autoit] [autoit][/autoit] [autoit]Func crys_post($sLink, $sPost = "")
Local $data
$sLink = StringReplace($sLink, "http://", "")
;if StringRight($sLink, 1) = "/" then $sLink = StringTrimRight($sLink, 1)
$aLink = StringSplit($sLink, "/", 1+2)
$sLink = $aLink[0]
$sLinkPfad = "/" & _ArrayToString($aLink, "/", 1)
;MsgBox(0, "URL", $sLink & @CRLF & $sLinkPfad & @CRLF & $sPost)
$hOpen = _WinHttpOpen()
$hConnect = _WinHttpConnect($hOpen, $sLink)
if $sPost = "" then
$hRequest = _WinHttpOpenRequest($hConnect, "GET", $sLinkPfad, "HTTP/1.1")
else
$hRequest = _WinHttpOpenRequest($hConnect, "POST", $sLinkPfad, "HTTP/1.1")
endif
_WinHttpSendRequest($hRequest, "Content-Type: application/x-www-form-urlencoded" & @CRLF, $sPost)
;_WinHttpSendRequest($hRequest, "Content-Type: multi-part/form-data" & @CRLF, $sPost)
if @error then MsgBox(16, "Fehler", "_WinHttpSendRequest()")
_WinHttpReceiveResponse($hRequest)
;$header = _WinHttpQueryHeaders($hRequest)
;MsgBox(0, "Header", $header)
If _WinHttpQueryDataAvailable($hRequest) Then
Do
$data &= _WinHttpReadData($hRequest)
Until @error
;MsgBox(0, "Daten", $data)
EndIf
_WinHttpCloseHandle($hRequest)
_WinHttpCloseHandle($hConnect)
_WinHttpCloseHandle($hOpen)
return $data
EndFunc