Es sind Delphi- und Objekt -Pascal -Bindungen und Umschläge um die Curl -Bibliothek. LIBCURL ist die Bibliothek zum Übertragen von Daten, die mit der URL -Syntax angegeben sind, und unterstützt HTTP, HTTPS, FTP, FTPS, GOPHER, TFTP, SCP, SFTP, SMB, Telnet, Dict, LDAP, LDAPS, IMAP, SMTP, POP3, RTSP und RTMP.
Bibliothek wird getestet für
Holen Sie sich die Quellen und fügen Sie das Quellverzeichnis zum Projektsuchpfad hinzu. Für FPC fügen Sie das Quellverzeichnis der fpc.cfg -Datei hinzu.
Klonen des Repository git clone https://github.com/isemenkov/libpascurl .
Fügen Sie das Gerät hinzu, das Sie uses möchten.
Die libpascurl.pas -Datei enthält die curl -übersetzten Header, um diese Bibliothek in Pascal -Programmen zu verwenden. Auf der Curl -Website finden Sie eine CAPI -Dokumentation.
uses
libpascurl;
var
handle : CURL;
effectiveUrl, contentType, ip : PChar;
responseCode, headerSize : Longint;
contentLength, totalTime : Longword;
buffer : TStringStream;
function WriteFunctionCallback (ptr : PChar; size : LongWord;
nmemb : LongWord; data : Pointer)
begin
buffer.WriteString(string(ptr));
end ;
begin
curl_global_init(CURL_GLOBAL_ALL);
curl_easy_setopt(handle, CURLOPT_URL, PChar( ' https://example.dev ' );
curl_easy_setopt(handle, CURLOPT_WRITEFUNCTION, @WriteFunctionCallback);
buffer := TStringStream.Create( ' ' );
if curl_easy_perform = CURLE_OK then
begin
New(effectiveUrl);
New(contentType);
New(ip);
curl_easy_getinfo(handle, CURLINFO_EFFECTIVE_URL, @effectiveUrl);
curl_easy_getinfo(handle, CURLINFO_RESPONSE_CODE, @responseCode);
curl_easy_getinfo(handle, CURLINFO_HEADER_SIZE, @headerSize);
curl_easy_getinfo(handle, CURLINFO_CONTENT_TYPE, @contentType);
curl_easy_getinfo(handle, CURLINFO_CONTENT_LENGTH_DOWNLOAD_T, @contentLength);
curl_easy_getinfo(handle, CURLINFO_LOCAL_IP, @ip);
curl_easy_getinfo(handle, CURLINFO_TOTAL_TIME_T, @totalTime);
writeln( ' URL: ' : 20 , effectiveUrl);
writeln( ' Response code: ' : 20 , responseCode);
writeln( ' Header size, kB: ' : 20 , FormatFloat( ' 0.00 ' , headerSize / 1024 ));
writeln( ' Content type: ' , contentType);
writeln( ' Content length, kB: ' : 20 , FormatFloat( ' 0.00 ' , contentLength / 1024 ));
writeln( ' IP: ' : 20 , ip);
writeln( ' Total time, ms: ' : 20 , totalTime);
writeln( ' ==== Content ==== ' );
writeln(buffer.DataString);
end ;
curl_global_cleanup;
end ; Die Bibliothek enthält eine Reihe von Klassen zum Erstellen hochrangiger Wrapper um die unterstützten Protokolle. Der source/curl/ Ordner enthält Basiskomponenten, die spezifische Funktionen implementieren.
| Klasse | Beschreibung |
|---|---|
| TcurLeasy | Es ist die Basisklasse, die die Curl -Bibliothek initialisieren und Fehlerbehandlungsfunktionen bietet. |
| TSession | Es ist die Elternklasse für Sitzungen aller unterstützten Protokolle. Es bietet einen TMemoryBuffer für gespeichertes Download-/Hochladen von Daten. |
| Tresponse | Es ist übergeordnete Klasse für Serverantwortdaten. |
| TPROPERTYMODUL | Es ist die Basisklasse für alle Sitzungen und Antworten zusätzliche Funktionsmodule. |
| Modulklasse | Beschreibung |
|---|---|
| Tmoduledns | Die Klasse bietet Eigenschaften, um libcurl DNS -Optionen einzurichten. |
| Tmodulequest | Klasse Bereitstellung von Eigenschaften zum Einrichten von Eigenschaften und Rückrufen von Anforderungen. |
| Tmodulheader | Die Klasse bietet Eigenschaften für die Einrichtung von Header. Kann nur mit HTTP -ähnlichen Protokollen verwendet werden - HTTP (S), FTP (s), POP3 (s), IMAP, SMTP. |
| TmoduleOptions | Die Klasse bietet Eigenschaften, um verschiedene interne Libcurl -Optionen einzurichten. |
| TmoduleProtokolle | Die Klasse bietet Eigenschaften, um libcurl -Protokolloptionen einzurichten. |
| Tmodulesocket | Klasse bietet Eigenschaften für Socket -Setup. |
| Tmoduletcp | Die Klasse bietet Eigenschaften zur Einrichtung von TCP -Protokolloptionen. |
| Tmodulewriter | Klasse bieten Eigenschaften zum Einrichten von Callback -Funktionen. |
| Tmodulereader | Klasse Bereitstellung von Eigenschaften zum Einrichten von Upload -Rückruffunktionen des Uploads. |
| TmoduleAuth | Klasse bietet Eigenschaften für die Einrichtung von Auth -Optionen. |
| Tmoduletlsauth | Klasse Bereitstellung von Eigenschaften zum Einrichten von TLS -Authentifizierungsoptionen. |
| TmoduleProxy | Klasse bietet Eigenschaften für die Einrichtung von Proxyoptionen. |
| Tmodulesock5 | Klasse bietet Eigenschaften für die Einrichtung von Socken -Proxy -Optionen. |
| Modulklasse | Beschreibung |
|---|---|
| Tmodulecontent | Klasse Bereitstellung von Eigenschaften, um Inhaltsdatenpuffer zu erhalten. |
| Tmodulheader | Die Klasse bietet Eigenschaften für Reaktionsüberschriften. Kann nur mit HTTP -ähnlichen Protokollen verwendet werden - HTTP (S), FTP (s), POP3 (s), IMAP, SMTP. |
| Tmoduleredirect | Klasse Bereitstellung von Informationen zu Anfragen Weiterleitungen. |
| Tmodulespeed | Klasse bieten Geschwindigkeits -Download-/Upload -Informationen. |
| Tmoduletimeout | Klasse gibt Zeitüberschreitungsinformationen. |
| TmodulEnfo | Klasse Bereitstellung von Sitzungsinformationen. |
Die THTTPSession- und THTTPResponse -Klassen implementieren Wrapper über das HTTP -Protokoll. Dieser Klassen erweitert die Funktionalität von Basisklassen und stellte eine neue bereit, die nur für dieses Protokoll spezifisch ist.
Diese Verpackung verwendet oder erweitert die nächsten Hauptmodule:
| Sitzungsmodule | Antwortmodule |
|---|---|
| ✔️ Tmoduledns | ✔️ TmoduleContent |
| ✔️ Tmodulheader | ✔️ Tmodulheader |
| ✔️ TmoduleOptions | ✔️ Tmoduleredirect |
| ✔️ TMODULEPROTOCOLS | ✔️ Tmodulespeed |
| ✔️ Tmodulesocket | ✔️ Tmoduletimeout |
| ✔️ TMODULETCP | ✔️ TmodulEnfo |
| ✔️ Tmodulewriter | |
| ✔️ TMODULEREADER | |
| ✔️ Tmodulequest | |
| ✔️ TmoduleAuth | |
| ✔️ Tmoduletlsauth | |
| ✔️ TmoduleProxy | |
| ✔️ Tmodulesock5 |
| Modulklasse | Beschreibung |
|---|---|
| Tmoduleredirect | Klasse Bereitstellung von Eigenschaften zum Einrichten von HTTP -Optionen für HTTP (s). |
| Tmodulehttp2 | Klasse Bereitstellung von Eigenschaften zum Einrichten von HTTP/2 -Protokolloptionen. |
| Tmoduletimeout | Klasse Bereitstellung von Eigenschaften zum Einrichten von HTTP (S) -Protokoll -Zeitüberschreitungsoptionen. |
| Modulklasse | Beschreibung |
|---|---|
| Tmodulecookie | Die Klasse bietet Cookies -Daten. |
uses
curl.http.session, curl.http.response;
var
Session : THTTP.TSession;
Response : THHTP.TResponse;
begin
Session.Url := ' https://github.com/isemenkov ' ;
Session.Redirect.FollowRedirect := True;
Response := Session.Get;
writeln( ' Url ' , Response.Request.Url);
writeln( ' Response code ' , Response.Header.ResponseCode);
writeln( ' Content-type ' , Response.Content.ContentType);
writeln( ' Content-size ' , Response.Content.ContentSize);
writeln( ' Content ' , Response.Content.ToString);
end ;