3.3 Verwendung der Low-Level-Schnittstelle

Die Verwendung der Low-Level-Schnittstelle von hURL ist schwieriger als die Verwendung der High-Level-Schnittstelle, da Sie damit direkt auf die APIs von curl zugreifen können. Das bedeutet, dass Sie sich zuerst mit der API von curl vertraut machen sollten, damit Sie wissen, wie sie gestaltet ist und wie sie ihren Zwecken dienen kann.

Grundsätzlich beinhaltet die direkte Verwendung einer Curl-API die folgenden drei Schritte:

  1. Erstellen Sie einen objektbasierten curl-Handle, z.B. einen Curl-Easy-Handle.
  2. Erledigen Sie etwas mit dem Handle, z.B. eine Übertragung starten.
  3. Schliessen Sie den Handle.

Um beispielsweise eine Datei mit der Easy-Schnittstelle von curl zu übertragen, können Sie den folgenden Code verwenden:

 
@REQUIRE "hurl"

; diese Funktion wird aufgerufen, wenn es neue Daten gibt
Function p_WriteData(data$)
   WriteBytes(1, data$)
EndFunction

OpenFile(1, "test.html", #MODE_WRITE)

; Easy-Objekt erstellen und konfigurieren
e = hurl.Easy({URL = "https://www.paypal.com/", WriteFunction =
        p_WriteData, FollowLocation = True})

; Daten übertragen
e:Perform()

; Easy-Objekt schliessen
e:Close()
CloseFile(1)

Der obige Code lädt die Seite unter https://www.paypal.com/ herunter und speichert sie mit Hilfe der Easy-Schnittstelle von curl in der Datei test.html. Dies geschieht, indem zuerst ein Easy-Objekt mit hurl.Easy() erstellt und dann die Optionen #CURLOPT_URL, #CURLOPT_WRITEFUNCTION und #CURLOPT_FOLLOWLOCATION auf diesem Easy-Objekt gesetzt werden.

Wie oben gezeigt, können die curl-Optionen direkt beim Erstellen von curl-Objekten eingestellt werden. Alternativ können Sie auch ein leeres curl-Objekt erstellen und die Optionen anschließend so einstellen:

 
e = hurl.Easy()
e:SetOpt_URL("https://www.paypal.com/")
e:SetOpt_WriteFunction(p_WriteData)
e:SetOpt_FollowLocation(True)

Dieser Code hat die gleiche Funktion wie der Code im entsprechenden Abschnitt oben. Der einzige Unterschied besteht darin, dass die Optionen nicht zur Erstellungszeit, sondern nach der Erstellung festgelegt werden. Darüber hinaus können Sie nach der Objekterstellung auch mehrere Optionen auf einmal einstellen. Hier ist eine weitere Alternative für die beiden obigen Codeausschnitte:

 
e = hurl.Easy()
e:SetOpt({URL = "https://www.paypal.com/", WriteFunction = p_WriteData,
            FollowLocation = True})

Schließlich können Sie auch easy:SetOpt() verwenden, um Curl-Optionen für Easy-Curl-Zugriffe festzulegen. Es gibt also sogar eine vierte Möglichkeit, das zu tun, was die obigen Code-Ausschnitte tun. Hier ist sie:

 
e = hurl.Easy()
e:SetOpt(#CURLOPT_URL, "https://www.paypal.com/")
e:SetOpt(#CURLOPT_WRITEFUNCTION, p_WriteData)
e:SetOpt(#CURLOPT_FOLLOWLOCATION, True)

Weitere Informationen über die Funktion der verschiedenen Optionen von curl finden Sie in den nun folgenden Kapiteln.


Navigation zeigen