Bezeichnung
hurl.URL -- erstellt ein URL-Objekt (V2.0)
Übersicht
handle = hurl.URL([url$, flags])
Beschreibung
Traditionell werden URLs an hURL mit der Methode easy:SetOpt_URL() oder z.B. #CURLOPT_URL übergeben. Ab hURL 2.0 können Sie URLs jedoch auch über URL-Objekte übergeben, die mit diesem Befehl erstellt wurden. Sobald hurl.URL() abgeschlossen ist, können Sie das neue URL-Objekt mit Methoden wie url:SetURL() oder url:SetPort() initialisieren und sie mithilfe von easy:SetOpt_CURLU an ein easy-Handle übergeben. Die Verwendung von URL-Objekten anstelle herkömmlicher URLs kann bei komplexen URLs mit seinen Bestandteilen praktischer sein.

Optional können Sie das URL-Objekt auch initialisieren, indem Sie eine URL in url$ übergeben. Wenn Sie url$ nicht übergeben, müssen Sie das URL-Objekt später mit url:SetURL() initialisieren. Es ist auch möglich, eine Kombination der folgenden Flags zu übergeben:

#CURLU_NON_SUPPORT_SCHEME
Wenn gesetzt, können Sie ein nicht unterstütztes Schema ermitteln.

#CURLU_URLENCODE
Wenn gesetzt, verschlüsselt die libcurl-URL den Teil bei der Eingabe, mit Ausnahme von Schema, Port und URL. Beim Festlegen der Pfadkomponente mit aktivierter URL-Kodierung wird der Schrägstrich übersprungen. Der Abfrageteil wird vor der URL-Konvertierung von Leerzeichen in Pluszeichen umgewandelt. Diese URL-Codierung ist zeichensatzunabhängig und konvertiert die Eingabe Byte für Byte.

#CURLU_DEFAULT_SCHEME
Wenn gesetzt, lässt libcurl zu, dass die URL ohne Schema angegeben wird und setzt diese dann auf das Standardschema: HTTPS. Überschreibt das Flag #CURLU_GUESS_SCHEME, wenn beide gesetzt sind.

#CURLU_GUESS_SCHEME
Wenn gesetzt, lässt libcurl das Abrufen der URL ohne Schema zu und "errät" stattdessen anhand des Hostnamens, welches Schema gemeint war. Wenn der äußerste Sub-Domain-Name mit DICT, FTP, IMAP, LDAP, POP3 oder SMTP übereinstimmt, wird dieses Schema verwendet, andernfalls wird HTTP gewählt. Steht im Konflikt mit dem Flag #CURLU_DEFAULT_SCHEME, welches Vorrang hat, wenn beide gesetzt sind.

#CURLU_NO_AUTHORITY
Wenn gesetzt, überspringt die Autoritätsprüfung. Der RFC erlaubt es einzelnen Schemata, den Host-Teil (normalerweise der einzige obligatorische Teil der Autorität) wegzulassen, aber libcurl kann nicht wissen, ob dies für benutzerdefinierte Schemata erlaubt ist. Die Angabe des Flags erlaubt leere Autoritätsabschnitte, ähnlich wie es bei Dateischemata gehandhabt wird.

#CURLU_PATH_AS_IS
Beim Abrufen von CURLUPART_URL überspringt libcurl die Normalisierung des Pfads. Dies ist die Prozedur, bei der Curl ansonsten Sequenzen aus Punkt-Schrägstrich und Punkt-Punkt usw. entfernt. Die gleiche Option, die für Übertragungen verwendet wird, heißt #CURLOPT_PATH_AS_IS.

#CURLU_ALLOW_SPACE
Wenn gesetzt, wird bei der URL-Parser Leerzeichen (ASCII 32) zugelassen. Die URL-Syntax erlaubt normalerweise keine Leerzeichen, aber sie sollten als %20 oder '+' kodiert werden. Auch wenn Leerzeichen erlaubt sind, sind sie im Schema trotzdem nicht erlaubt. Wenn ein Leerzeichen in einer URL verwendet wird und erlaubt ist, wird es so gespeichert, wie es ist, es sei denn, #CURLU_URLENCODE ist auch gesetzt, was libcurl dazu veranlasst, das Leerzeichen vor der Speicherung in die URL zu kodieren. Dies beeinflusst, wie die URL erstellt wird, wenn curl_url_get anschließend benutzt wird, um die komplette URL oder einzelne Teile zu extrahieren.

#CURLU_DISALLOW_USER
Wenn gesetzt, akzeptiert der URL-Parser keine eingebetteten Anmeldeinformationen für #CURLUPART_URL und gibt stattdessen für solche URLs zurück.

#CURLU_APPENDQUERY
Kann nur mit url:SetQuery() verwendet werden. Der angegebene neue Teil wird dann stattdessen an das Ende der bestehenden Abfrage angehängt - und wenn der vorherige Teil nicht mit einem Et-Zeichen (Und-Zeichen) endete, wird ein Et-Zeichen vor dem neuen angehängten Teil eingefügt. Wenn #CURLU_APPENDQUERY zusammen mit #CURLU_URLENCODE verwendet wird, wird das erste '=' Symbol nicht URL-kodiert.

Bei der Verwendung von Abfragemethoden wie url:GetURL() oder url:GetPort() haben die Flags eine andere Funktion und es gibt einige weitere Flags. Hier ist eine Beschreibung der Flags, die mit Abfragemethoden verwendet werden können:

#CURLU_DEFAULT_PORT
Wenn der Handle keinen Port gespeichert hat, sorgt diese Option dafür, dass curl den Standardport für das verwendete Schema zurückgibt.

#CURLU_DEFAULT_SCHEME
Wenn der Handle kein Schema gespeichert hat, führt diese Option dazu, dass curl das Standardschema anstelle eines Fehlers zurückgibt.

#CURLU_NO_DEFAULT_PORT
Weist curl an, keine Portnummer zurückzugeben, wenn sie mit dem Standardport für das Schema übereinstimmt.

#CURLU_URLDECODE
Der Inhalt wird per URL dekodiert, bevor er zurückgegeben wird. Es wird nicht versucht, das Schema, die Portnummer oder die vollständige URL zu dekodieren. Die Abfragekomponente erhält als Bonus auch eine Plus-zu-Leerzeichen-Konvertierung, wenn diese Option gesetzt ist. Beachten Sie, dass diese URL-Dekodierung den Zeichensatz nicht berücksichtigt und Sie eine Zeichenkette mit Daten zurückerhalten, die für eine bestimmte Kodierung bestimmt sein könnten. Wenn die dekodierte Zeichenkette Byte-Werte kleiner als 32 enthält, gibt die Abfrageoperation stattdessen einen Fehler zurück.

#CURLU_URLENCODE
Wenn gesetzt, wird die Curl-URL den Teil des Hostnamens kodieren, wenn eine vollständige URL abgerufen wird. Wenn nicht gesetzt (Voreinstellung), gibt libcurl die URL mit dem Hostnamen "raw" zurück, damit IDN-Namen unverändert angezeigt werden. IDN-Hostnamen verwenden typischerweise Nicht-ASCII-Bytes, die ansonsten prozentual kodiert würden. Beachten Sie, dass das '%' (Byte 37) auch dann URL-kodiert wird, wenn keine URL-Kodierung abgefragt wird, um sicherzustellen, dass der Hostname gültig bleibt.

#CURLU_PUNYCODE
Wenn #CURLU_PUNYCODE abgefragt wird und #CURLU_URLENCODE hingegen nicht und die Host- oder URL-Teile abgefragt wird, gibt libcurl den Hostnamen in seiner Punycode-Version zurück, wenn er irgendwelche Nicht-ASCII-Oktette enthält (und ein IDN-Name ist). Wenn libcurl ohne IDN-Funktionen erstellt wurde, führt die Verwendung dieses Bits dazu, dass curl zurückkehrt, wenn der Hostname etwas außerhalb des ASCII-Bereichs enthält.

Eingaben
url$
optional: URL, mit der das Objekt initialisiert werden soll
flags
optional: Flags zur Verwendung bei der Initialisierung (siehe oben)
Rückgabewerte
handle
URL-Objekt
Beispiel
e = hurl.Easy()
u = hurl.URL("https://www.paypal.com/")
e:SetOpt_CURLU(u)
e:SetOpt_WriteFunction(p_WriteData)
e:SetOpt_FollowLocation(True)
e:Perform()
e:Close()
Der obige Code zeigt, wie Sie ein URL-Objekt mit der einfachen Schnittstelle von hURL erstellen und verwenden.

Navigation zeigen