Il s'agit de liaisons de Delphi et Pascal et de wrapper autour de la bibliothèque Curl. Libcurl est que la bibliothèque utilise pour le transfert de données spécifiées avec la syntaxe URL, prenant en charge HTTP, HTTPS, FTP, FTPS, Gopher, TFTP, SCP, SFTP, SMB, Telnet, Dict, LDAP, LDAPS, File, IMAP, SMTP, POP3, RTSP et RTMP.
La bibliothèque est testée pour
Obtenez les sources et ajoutez le répertoire source au chemin de recherche de projet. Pour FPC, ajoutez le répertoire source au fichier fpc.cfg .
CLONE Le référentiel git clone https://github.com/isemenkov/libpascurl .
Ajoutez l'unité que vous souhaitez utiliser à la clause uses .
Le fichier libpascurl.pas contient les en-têtes traduits en boucle pour utiliser cette bibliothèque dans les programmes Pascal. Vous pouvez trouver la documentation de l'API C sur le site Web de Curl.
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 ; La bibliothèque contient un ensemble de classes pour créer des emballages de haut niveau autour des protocoles pris en charge. Le dossier source/curl/ contient des composants de base qui implémentent des fonctionnalités spécifiques.
| Classe | Description |
|---|---|
| Tcurleasy | Il s'agit de la classe de base qui initialise la bibliothèque Curl et fournit des fonctionnalités de traitement des erreurs. |
| Tasse | C'est une classe parent pour les séances de tous les protocoles pris en charge. Il fournit un tmemorybuffer pour les données de téléchargement / téléchargement stockées. |
| Intription | Il s'agit d'une classe parent pour les données de réponse du serveur. |
| Tpropertymodule | C'est une classe de base pour toutes les séances et réponses modules de fonctionnalité supplémentaires. |
| Classe de module | Description |
|---|---|
| Tmoduledns | La classe fournit des propriétés pour configurer les options DNS libcurl. |
| Tmodulerequest | La classe fournit des propriétés pour configurer les propriétés et les rappels de la demande. |
| Tmoduleheader | La classe fournit des propriétés aux en-têtes de configuration. Peut être utilisé uniquement avec des protocoles de type HTTP - HTTP (S), FTP (S), POP3 (S), IMAP, SMTP. |
| Tmoduleoptions | La classe fournit des propriétés pour configurer différentes options internes libcurl. |
| Tmoduleprotocols | La classe fournit des propriétés pour configurer les options de protocole Libcurl. |
| Tmodulesocket | La classe fournit des propriétés à la configuration des socket. |
| Tmoduletcp | La classe fournit des propriétés pour configurer les options de protocole TCP. |
| Tmodulewriter | Classe Fournissez des propriétés pour configurer la fonction de rappel de téléchargement. |
| TMODULEREDER | Classe Fournir des propriétés pour configurer la fonction de rappel de téléchargement. |
| Tmoduleauth | La classe fournit des propriétés pour configurer les options d'authentification. |
| Tmoduletlsauth | La classe fournit des propriétés pour configurer les options d'authentification TLS Auth. |
| Tmoduleproxy | La classe fournit des propriétés pour configurer les options de proxy. |
| Tmodulesock5 | La classe fournit des propriétés à la configuration des options de proxy SOCK5. |
| Classe de module | Description |
|---|---|
| Tmodulecontent | La classe fournit des propriétés pour obtenir du tampon de données de contenu. |
| Tmoduleheader | La classe fournit des propriétés aux en-têtes de réponse. Peut être utilisé uniquement avec des protocoles de type HTTP - HTTP (S), FTP (S), POP3 (S), IMAP, SMTP. |
| TmodulereDirect | La classe fournit des informations sur les redirections de demande. |
| Tmodulespeed | Classe Fournir des informations sur le téléchargement / téléchargement de vitesse. |
| Tmoduletimeout | Classe Fournir des informations sur les délais d'attente. |
| Tmoduleinfo | Classe Fournir des informations de session. |
Les classes ThtTpSession et ThttpResponse mettent en œuvre le protocole HTTP (S). Ces classes étendent la fonctionnalité des classes de base et en ont fourni une nouvelle qui est spécifique uniquement à ce protocole.
Cet emballage utilisé ou étend les modules principaux suivants:
| Modules de session | Modules de réponse |
|---|---|
| ✔️ Tmoduledns | ✔️ TmoduleContent |
| ✔️ TmoduleHeader | ✔️ TmoduleHeader |
| ✔️ Tmoduleoptions | ✔️ tmodulereDirect |
| ✔️ Tmoduleprotocols | ✔️ Tmodulespeed |
| ✔️ Tmodulesocket | ✔️ Tmoduletimeout |
| ✔️ Tmoduletcp | ✔️ Tmoduleinfo |
| ✔️ Tmodulewriter | |
| ✔️ TMODULEREDER | |
| ✔️ Tmodulerequest | |
| ✔️ TmoduleAuth | |
| ✔️ Tmoduletlsauth | |
| ✔️ tmoduleproxy | |
| ✔️ Tmodulesock5 |
| Classe de module | Description |
|---|---|
| TmodulereDirect | La classe fournit des propriétés pour configurer les options de redirection HTTP (S). |
| Tmodulehttp2 | La classe fournit des propriétés pour configurer les options de protocole HTTP / 2. |
| Tmoduletimeout | La classe fournit des propriétés pour configurer les options de délai d'expiration du protocole HTTP (S). |
| Classe de module | Description |
|---|---|
| Tmodulecookie | Classe Fournir des données de cookies. |
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 ;