Funktionreferenz


InetGet

Beschreibung anzeigen in

Lädt eine Datei aus dem Internet unter Verwendung des HTTP-, HTTPS- oder FTP-Protokolls.

InetGet ( "URL", "filename" [, options = 0 [, background = 0]] )

Parameter

URL URL der herunterzuladenden Datei. Siehe Bemerkungen unten.
filename Neuer, lokaler Dateiname nach dem Download.
options [optional]$INET_LOCALCACHE (0) = Holt die Datei aus dem lokalen Cache, wenn vorhanden (Standard).
    $INET_FORCERELOAD (1) = Erzwingt ein erneutes Laden von der Remote-Seite.
    $INET_IGNORESSL (2) = Ignoriert alle SSL-Fehler (bei HTTPS-Verbindungen).
    $INET_ASCIITRANSFER (4) = Verwendet ASCII, wenn Dateien mit dem FTP-Protokol transferiert werden (Kann nicht mit Flag $INET_BINARYTRANSFER (8) kombiniert werden).
    $INET_BINARYTRANSFER (8) = Verwendet BINARY, wenn Dateien mit dem FTP-Protokol transferiert werden (Kann nicht mit Flag $INET_ASCIITRANSFER (4) kombiniert werden). Dies ist der Standardtransfermodus, falls kein anderer angegeben wird.
    $INET_FORCEBYPASS (16) = Umgeht das Erzwingen einer Onlineverbindung (Siehe Bemerkungen).

Die Konstanten sind in InetConstants.au3 definiert.
background [optional]
    $INET_DOWNLOADWAIT (0) = Wartet mit der Fortsetzung des Skripts, bis der Download abgeschlossen ist (Standard).
    $INET_DOWNLOADBACKGROUND (1) = Sofortige Fortsetzung des Skripts, während der Download im Hintergrund ausgeführt wird (siehe Bemerkungen).

Die Konstanten sind in InetConstants.au3 definiert.

Rückgabewert

Erfolg: Der Rückgabewert ändert sich abhängig davon, ob der Download im Hintergrund läuft:
Hintergrund: Ein Handle wird zurückgegeben.
Warten: Die Anzahl der heruntergeladenen Bytes.
Fehler: Hintergrund: Ein Handle wird zurückgegeben.
Warten: 0 und setzt das @error Flag auf ungleich null.

Bemerkungen

Um festzustellen, ob es beim Download einen Fehler gab, ist das zurückgegebene Handle mit InetGetInfo() zu verwenden.
Das Handle muss mit InetClose() freigegeben werden.

Der URL-Parameter sollte die folgende Form haben: "http://www.somesite.com/path/file.html" - wie eine Adresse, die man in den Webbrowser tippt.

Um einen Benutzernamen und Passwort zum Verbinden zu benutzen, schreibt man einfach "Username:Passwort@" vor den Servernamen, z.B. "http://myuser:mypassword@www.somesite.com"


Anmerkungen zum "background"-Parameter
Standardmäßig wartet die Funktion mit der Fortsetzung des Skripts, bis der Download abgeschlossen ist. Wenn der Parameter background auf $INET_DOWNLOADBACKGROUND (1) gesetzt wird, so wird das Skript sofort fortgesetzt und der Download läuft im Hintergrund weiter. Die Funktion InetGetInfo() kann verwendet werden, um den Status des Downloads festzustellen. Sie benötigt das Handle, welches von InetGet() zurückgegeben wurde.

Mehrere parallele Downloads werden unterstützt, falls diese im Hintergrundmodus gestartet wurden.

Um einen Download abzubrechen, ist InetClose() aufzurufen und das von InetGet() zurückgegebene Handle zu übergeben.

Standardmäßig erzwingt AutoIt eine Verbindung, bevor der Download beginnt. Bei Benutzern mit einer DFÜ-Verbindung erscheint eine Nachricht, dass man Online gehen oder sich mit dem Modem einwählen soll (abhängig davon, wie das System konfiguriert ist). Der Wert $INET_FORCEBYPASS (16) des options-Parameters deaktiviert dieses Verhalten. Das Deaktivieren dieses Verhaltens kann z.B. für ständige Verbindungen (Breitband, LAN) sinnvoll sein. Es ist jedoch auch geeignet, um fehlerfrei unter Windows Vista und Windows 7 arbeiten zu können.

Verwandte Funktionen

FtpSetProxy, HttpSetProxy, HttpSetUserAgent, InetClose, InetGetInfo, InetGetSize, InetRead

Beispiel

Beispiel 1

#include <InetConstants.au3>
#include <MsgBoxConstants.au3>
#include <WinAPIFiles.au3>

; InetGet downloaded eine Datei im Hintergrund.
; Das AutoIt Skript prüft in einer Schleife, ob der Download vollständig ist.

Example()

Func Example()
    ; Speichert die heruntergeladene Datei in den temporären Ordner.
    Local $sFilePath = _WinAPI_GetTempFileName(@TempDir)

    ; Lädt die Datei im Hintergrund mit den ausgewählten Optionen von 'Erzwingt ein erneutes Laden von der Remote-Seite' herunter.
    Local $hDownload = InetGet("http://www.autoitscript.com/autoit3/files/beta/update.dat", $sFilePath, $INET_FORCERELOAD, $INET_DOWNLOADBACKGROUND)

    ; Wartet bis der Download komplett ist. Dabei wird solange gewartet, bis der zweite Wert von InetGetInfo True zurückgibt.
    Do
        Sleep(250)
    Until InetGetInfo($hDownload, $INET_DOWNLOADCOMPLETE)

    ; Ermittelt die übertragenen Bytes und die Dateigröße.
    Local $iBytesSize = InetGetInfo($hDownload, $INET_DOWNLOADREAD)
    Local $iFileSize = FileGetSize($sFilePath)

    ; Schließt das durch InetGet zurückgegebene Handle.
    InetClose($hDownload)

    ; Zeigt Details über die gelesenen Bytes und die Dateigröße.
    MsgBox($MB_SYSTEMMODAL, "", "heruntergeladene Bytes: " & $iBytesSize & @CRLF & _
            "gesamte Dateigröße: " & $iFileSize)

    ; Löscht die Datei.
    FileDelete($sFilePath)
EndFunc   ;==>Example

Beispiel 2

#include <InetConstants.au3>
#include <MsgBoxConstants.au3>
#include <WinAPIFiles.au3>

; InetGet wartet, bis der Download abgeschlossen ist.

Beispiel()

Func Beispiel()
    ; Speichert die heruntergeladene Datei im temporären Ordner.
    Local $sFilePath = _WinAPI_GetTempFileName(@TempDir)

    ; Lädt die Datei herunter und wartet, bis der Vorgang abgeschlossen ist. Die Option $INET_FORCERELOAD erzwingt das Neuladen vom entfernten Server.
    Local $iBytesSize = InetGet("http://www.autoitscript.com/autoit3/files/beta/update.dat", $sFilePath, $INET_FORCERELOAD)

    ; Abrufen der Dateigröße.
    Local $iFileSize = FileGetSize($sFilePath)

    ; Zeigt Details über die Gesamtzahl der gelesenen Bytes und die Dateigröße an.
    MsgBox($MB_SYSTEMMODAL, "", "Die Gesamtgröße des Downloads: " & $iBytesSize & @CRLF & _
            "Die gesamte Dateigröße: " & $iFileSize)

    ; Löscht die temporäre lokale Datei.
    FileDelete($sFilePath)
EndFunc   ;==>Beispiel