Wie kann ich prüfen lassen, ob eine bestimmte .rar Datei online ist und sie ggf downloaden?
WinHTTP Frage
-
- [ offen ]
-
dasT17 -
11. März 2011 um 13:37 -
Geschlossen -
Erledigt
-
-
[autoit]
InetGet ( "URL" [,"filename" [, options [, background]]] )
[/autoit] -
Mal ein Beispiel.
Spoiler anzeigen
[autoit]#include <WinHTTP.au3>
[/autoit] [autoit][/autoit] [autoit]
; - Author: name22
$sURL_Download = 'http://autoit.de/wcf/images/futurex/autoit_logo_gtaspider.png'
$sPathDst = @DesktopDir$aURL_Split = _WinHttpCrackUrl($sURL_Download)
[/autoit] [autoit][/autoit] [autoit]$hOpen = _WinHttpOpen()
[/autoit] [autoit][/autoit] [autoit]
$hConnect = _WinHttpConnect($hOpen, $aURL_Split[2])
$hRequest = _WinHttpOpenRequest($hConnect, "GET", $aURL_Split[6])_WinHttpSendRequest($hRequest)
[/autoit] [autoit][/autoit] [autoit]
_WinHttpReceiveResponse($hRequest)$vData = Binary("")
[/autoit] [autoit][/autoit] [autoit]
Do
$vData &= _WinHttpReadData($hRequest, 2)
Until @error_WinHttpCloseHandle($hRequest)
[/autoit] [autoit][/autoit] [autoit]
_WinHttpCloseHandle($hConnect)
_WinHttpCloseHandle($hOpen)$hFile = FileOpen($sPathDst & "\" & StringTrimLeft($aURL_Split[6], StringInStr($aURL_Split[6], "/", 0, -1)), 18)
[/autoit] [autoit][/autoit] [autoit]
FileWrite($hFile, $vData)
FileClose($hFile)MsgBox(64, "Info", "Download abgeschlossen")
[/autoit] -
danke erstmal, damit komm ich schon ziemlich gut klar.
Das einzige Problem ist jetzt noch, dass es in meinem Fall wirklich sein kann, dass die Datei nicht existiert.
[autoit]
Habe deshalb mal folgendes probiert:Do
[/autoit]
$vData &= _WinHttpReadData($hRequest, 2)
If @error=2 Then MsgBox(64, "Info", "Datei nicht vorhanden")
Until @error
Aber wenn ich das mit ner nicht vorhandenen Datei laufen lasse, kommt trotzdem keine Fehlermeldung -
@error wird in keinem Fall auf 2 gesetzt
...Daszu brauchst du einen anderen Befehl.Spoiler anzeigen
[autoit]#include <WinHTTP.au3>
[/autoit] [autoit][/autoit] [autoit]; -Author: name22(http://www.autoit.de)
[/autoit] [autoit][/autoit] [autoit]$sURL_Download = 'http://autoit.de/wcf/images/futurex/autoit_logo_gtaspider.png'
[/autoit] [autoit][/autoit] [autoit]
$sPathDst = @DesktopDir$aURL_Split = _WinHttpCrackUrl($sURL_Download)
[/autoit] [autoit][/autoit] [autoit]$hOpen = _WinHttpOpen()
[/autoit] [autoit][/autoit] [autoit]
$hConnect = _WinHttpConnect($hOpen, $aURL_Split[2])
$hRequest = _WinHttpOpenRequest($hConnect, "GET", $aURL_Split[6])_WinHttpSendRequest($hRequest)
[/autoit] [autoit][/autoit] [autoit]
_WinHttpReceiveResponse($hRequest)Switch _WinHttpQueryDataAvailable($hRequest)
[/autoit] [autoit][/autoit] [autoit]
Case True
$vData = Binary("")
Do
$vData &= _WinHttpReadData($hRequest, 2)
Until @error_WinHttpCloseHandle($hRequest)
[/autoit] [autoit][/autoit] [autoit]
_WinHttpCloseHandle($hConnect)
_WinHttpCloseHandle($hOpen)$hFile = FileOpen($sPathDst & "\" & StringTrimLeft($aURL_Split[6], StringInStr($aURL_Split[6], "/", 0, -1)), 18)
[/autoit] [autoit][/autoit] [autoit]
FileWrite($hFile, $vData)
FileClose($hFile)MsgBox(64, "Info", "Download completed.")
[/autoit]
Case False
MsgBox(16, "Error", "No Data available.")
EndSwitch -
funktioniert so leider nicht, hab einfach mal den Namen der png-Datei auf autoit_logo_gtaspider123.png geändert und die Datei wurde trotzdem geschrieben.
-
Das liegt daran, das er dann den 404 Error den du normalerweise zu sehen bekommst in die Datei schreibt. Und das sind nun mal Daten, also arbeitet die Funktion korrekt. Eine mögliche Lösung fällt mir im Moment leider nicht ein...
