HttpUtils: Unterschied zwischen den Versionen
(Erstentwurf) |
|||
Zeile 38: | Zeile 38: | ||
=== GetFileFromURL === | === GetFileFromURL === | ||
Die Funktion GetFileFromURL ruft die HTTP URL auf und gibt als Funktionsergebnis den Seiteninhalt zurück. | Die Funktion GetFileFromURL ruft die HTTP URL auf und gibt als Funktionsergebnis den Seiteninhalt zurück. Im Gegensatz zu GetHttpFile beinhaltet GetFileFromURL einige Zusatzoptionen in Form von Funktionsparametern. | ||
Zeile 91: | Zeile 91: | ||
Funktionsergebnis ist der Inhalt der aufgerufenen Seite in Form eines Strings. | Funktionsergebnis ist der Inhalt der aufgerufenen Seite in Form eines Strings. | ||
=== GetFileFromURLQuiet === | === GetFileFromURLQuiet === |
Version vom 29. Mai 2014, 11:47 Uhr
Allgemein
Das Modul HttpUtils.pm ist sowohl für Modulentwickler, als auch Endanwender gedacht um Daten via HTTP auszutauschen. Es stellt dabei eine Reihe von Funktionen bereit, auf die in diesem Artikel näher eingegangen werden soll.
Erstellt wurde HttpUtils.pm von Rudolf König.
Die Funktionen im Einzelnen
Folgende Funktionen sind für Modulentwickler/Endanwender zur direkten Nutzung gedacht:
GetHttpFile
Die Funktion GetHttpFile ist die denkbar einfachste Variante um eine URL aufzurufen.
Aufruf: GetHttpFile($server, $file)
Parameter | Bedeutung |
---|---|
$server |
Der DNS Name oder die IP-Adresse des HTTP-Servers Beispiel:
|
$file |
Die Datei, welche auf dem HTTP-Server aufgerufen werden soll. Beispiel:
|
Funktionsergebnis ist der Inhalt der aufgerufenen Seite in Form eines Strings.
GetFileFromURL
Die Funktion GetFileFromURL ruft die HTTP URL auf und gibt als Funktionsergebnis den Seiteninhalt zurück. Im Gegensatz zu GetHttpFile beinhaltet GetFileFromURL einige Zusatzoptionen in Form von Funktionsparametern.
Aufruf: GetFileFromURL($url, [$timeout], [$data], [$noshutdown], [$loglevel])
Parameter | Bedeutung |
---|---|
$url |
Die HTTP URL, welche aufgerufen werden soll. Diese kann optional Usernamen, Passwort und einen Port enthalten. Beispiel:
|
$timeout
optional |
Die maximale Dauer in Sekunden für die HTTP-Anfrage
Standardwert: 4 Sekunden |
$data
optional |
Wenn man Daten via HTTP POST übertragen möchte, so kann man die Nutzdaten über $data übergeben. Die Daten werden dabei als Formulardaten übertragen. Wenn man den Content-Type beeinflussen möchte, oder mehrere Formular-Felder senden möchte, sollte man zur Funktion HttpUtils_BlockingGet oder HttpUtils_NonblockingGet greifen.
|
$noshutdown
optional |
Wenn $noshutdown auf 1 gesetzt ist, wird dem HTTP-Server nicht implizit mitgeteilt, dass die Verbindung nach dem Request geschlossen werden soll. Dieser Parameter ist zum Beispiel notwendig um Anfragen an eine FritzBox zu stellen.
|
$loglevel
optional |
Das Loglevel in dem sämtliche Logmeldungen zu dieser HTTP Abfrage erzeugt werden sollen.
|
Funktionsergebnis ist der Inhalt der aufgerufenen Seite in Form eines Strings.
GetFileFromURLQuiet
Diese Funktion funktioniert ähnlich wie GetFileFromURL. Allerdings wird die tatsächliche URL in allen erzeugten Log-Meldungen unkenntlich gemacht um z.B. Zugangsdaten nicht preiszugeben. Die aufgerufene Seite wird ebenfalls als Funktionsergebnis zurückgegeben.
Aufruf: GetFileFromURLQuiet($url, [$timeout], [$data], [$noshutdown], [$loglevel])
Parameter | Bedeutung |
---|---|
$url |
Die HTTP URL, welche aufgerufen werden soll. Diese kann optional Usernamen, Passwort und einen Port enthalten. Beispiel:
|
$timeout
optional |
Die maximale Dauer in Sekunden für die HTTP-Anfrage
Standardwert: 4 Sekunden |
$data
optional |
Wenn man Daten via HTTP POST übertragen möchte, so kann man die Nutzdaten über $data übergeben. Die Daten werden dabei als Formulardaten übertragen. Wenn man den Content-Type beeinflussen möchte, oder mehrere Formular-Felder senden möchte, sollte man zur Funktion HttpUtils_BlockingGet oder HttpUtils_NonblockingGet greifen.
|
$noshutdown
optional |
Wenn $noshutdown auf 1 gesetzt ist, wird dem HTTP-Server nicht implizit mitgeteilt, dass die Verbindung nach dem Request geschlossen werden soll. Dieser Parameter ist zum Beispiel notwendig um Anfragen an eine FritzBox zu stellen.
|
$loglevel
optional |
Das Loglevel in dem sämtliche Logmeldungen zu dieser HTTP Abfrage erzeugt werden sollen.
|
HttpUtils_BlockingGet
Wenn die bisher genannten Funktionen nicht ausreichen um die gewünschte Abfrage durchzuführen, so kann man diese Funktion verwenden. Aufgrund zahlreicher Parameter ermöglicht sie viele Anpassungsmöglichkeiten. Diese Funktion hat dabei nicht wie üblich eine Liste an Funktionsparametern, sondern lediglich einen Parameter, welcher ein Hash mit allen Funktionsparametern darstellt. Dieser Hash enthält sämtliche Parameter inkl. Werten.
Aufruf: HttpUtils_BlockingGet($param)
Der Hash $param kann folgende Optionen beinhalten:
Parameter | Bedeutung |
---|---|
$param->{url} |
Die HTTP URL, welche aufgerufen werden soll. Diese kann optional Usernamen, Passwort und einen Port enthalten. Beispiel:
|
$param->{timeout}
optional |
Die maximale Dauer in Sekunden für die HTTP-Anfrage
Standardwert: 4 Sekunden |
$param->{data}
optional |
Wenn man Daten via HTTP POST übertragen möchte, so kann man die Nutzdaten über $param{data} übergeben. Die Daten werden dabei als Formulardaten übertragen. Die Daten können dabei auf zwei Arten übergeben werden:
1. Daten als String:
2. Daten als Hash:
|
$param->{noshutdown}
optional |
Wenn $param->{noshutdown} auf 1 gesetzt ist, wird dem HTTP-Server nicht implizit mitgeteilt, dass die Verbindung nach dem Request geschlossen werden soll. Dieser Parameter ist zum Beispiel notwendig um Anfragen an eine FritzBox zu stellen.
|
$param->{loglevel}
optional |
Das Loglevel in dem sämtliche Logmeldungen zu dieser HTTP Abfrage erzeugt werden sollen.
|
$param->{hideurl}
optional |
Wenn dieser Parameter den Wert 1 trägt, wird die URL in sämtlichen Log-Ausgaben unkenntlich gemacht. Dies ist nützlich um z.B. Zugangsdaten geheim zu halten.
|
$param->{method}
optional |
Die HTTP Methode, welche zur Abfrage verwendet werden soll. Sofern keine Daten übertragen werden ist dies standardmäßig "GET", ansonsten "POST". Es können aber auch andere Methoden verwendet werden.
|
$param->{header}
optional |
Eigene HTTP-Header Zeilen können über diesen Parameter eingebracht werden. Er kann dazu genutzt werden um z.B. den Content-Type festzulegen, oder einfach nur zusätzliche Header-Felder zu setzen. Mehrere Header-Zeilen müssen dabei mit "\r\n" getrennt werden.
|