هو Delphi و Object Pascal Bindings و Wrapper حول مكتبة حليقة. libcurl هي أن المكتبة تستخدمها لنقل البيانات المحددة مع بناء جملة URL ، ودعم HTTP ، HTTPS ، FTP ، FTPs ، Gopher ، TFTP ، SCP ، SFTP ، SMB ، Telnet ، DICT ، LDAP ، LDAPS ، FILE ، SMTP ، POP3 ، RTSP و RTMP.
تم اختبار المكتبة
احصل على المصادر وأضف دليل المصدر إلى مسار البحث عن المشروع. لـ FPC ، أضف دليل المصدر إلى ملف FPC.CFG .
استنساخ المستودع git clone https://github.com/isemenkov/libpascurl .
أضف الوحدة التي تريد استخدامها إلى شرط uses .
يحتوي ملف libpascurl.pas على الرؤوس المترجمة للتجعيد لاستخدام هذه المكتبة في برامج Pascal. يمكنك العثور على وثائق C API في موقع 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 ; تحتوي المكتبة على مجموعة من الفصول لإنشاء أغلفة عالية المستوى حول البروتوكولات المدعومة. يحتوي source/curl/ المجلد على مكونات أساسية تنفذ وظائف محددة.
| فصل | وصف |
|---|---|
| tcurleasy | إنها فئة أساسية تهيئة مكتبة حليقة وتوفر وظائف معالجة الأخطاء. |
| tsession | إنها فئة الوالدين لجلسات جميع البروتوكولات المدعومة. يوفر tmemorybuffer لبيانات التنزيل/التحميل المخزنة. |
| التعدي | إنها فئة الوالدين لبيانات استجابة الخادم. |
| tpropertymodule | إنه فئة أساسية لجميع الجلسات والاستجابات وحدات وظائف إضافية. |
| فئة الوحدة النمطية | وصف |
|---|---|
| tmoduledns | يوفر الفصل خصائص لإعداد خيارات LIBCURL DNS. |
| tmodulerequest | يوفر الفصل خصائص لإعداد خصائص طلب وعمليات الاسترجاعات. |
| tmoduleHeader | فئة توفر خصائص لإعداد الرؤوس. يمكن استخدامها فقط مع بروتوكولات تشبه HTTP - HTTP (S) ، FTP (S) ، Pop3 (S) ، IMAP ، SMTP. |
| tmoduleoptions | يوفر الفصل خصائص لإعداد الخيارات الداخلية Libcurl مختلفة. |
| tmoduleprotocols | يوفر الفصل خصائص لإعداد خيارات بروتوكول libcurl. |
| tmodulesocket | فئة توفير خصائص لإعداد المقبس. |
| tmoduletcp | يوفر الفصل خصائص لإعداد خيارات بروتوكول TCP. |
| tmodulewriter | يوفر الفصل خصائص لتنزيل وظيفة رد الاتصال. |
| TmoduleReader | يوفر الفصل خصائص لإعداد وظيفة رد الاتصال. |
| tmoduleauth | يوفر الفصل خصائص لإعداد خيارات المصادقة. |
| tmoduletlsauth | يوفر الفصل خصائص لإعداد خيارات مصادقة مصادقة TLS. |
| tmoduleproxy | يوفر الفصل خصائص لإعداد خيارات الوكيل. |
| tmodulesock5 | يوفر الفصل خصائص لإعداد خيارات الوكيل Sock5. |
| فئة الوحدة النمطية | وصف |
|---|---|
| tmoduleContent | يوفر الفصل خصائص للحصول على عازلة بيانات المحتوى. |
| tmoduleHeader | فئة توفر خصائص لرؤوس الاستجابة. يمكن استخدامها فقط مع بروتوكولات تشبه HTTP - HTTP (S) ، FTP (S) ، Pop3 (S) ، IMAP ، SMTP. |
| tmoduleredirect | يقدم الفصل معلومات حول إعادة توجيه الطلب. |
| tmodulespeed | فئة توفر سرعة تنزيل/تحميل. |
| tmoduletimeout | فئة توفر معلومات المهلة. |
| tmoduleinfo | يقدم الفصل معلومات الجلسة. |
يقوم Thttpsession و ThttPresponse Classes بتنفيذ Wrapper حول بروتوكول HTTP (S). تعمل هذه الفئات على توسيع وظائف الفئات الأساسية وتوفر واحدة جديدة خاصة بهذا البروتوكول.
يستخدم هذا الغلاف أو يمتد الوحدات الرئيسية التالية:
| وحدات الجلسة | وحدات الاستجابة |
|---|---|
| ✔ tmoduledns | tmoduleContent |
| ✔ tmoduleHeader | ✔ tmoduleHeader |
| tmoduleoptions | ✔ tmoduleredirect |
| tmoduleprotocols | ✔ tmodulespeed |
| tmodulesocket | tmoduletimeout |
| ✔ tmoduletcp | ✔ tmoduleinfo |
| tmodulewriter | |
| tmoduleReader | |
| ✔ tmodulerequest | |
| tmoduleauth | |
| tmoduletlsauth | |
| tmoduleproxy | |
| tmodulesock5 |
| فئة الوحدة النمطية | وصف |
|---|---|
| tmoduleredirect | يوفر الفصل خصائص لإعداد خيارات إعادة توجيه HTTP (S). |
| tmodulehttp2 | يوفر الفصل خصائص لإعداد خيارات بروتوكول HTTP/2. |
| tmoduletimeout | يوفر الفصل خصائص لإعداد خيارات مهلة بروتوكول HTTP. |
| فئة الوحدة النمطية | وصف |
|---|---|
| tmodulecookie | فئة توفر بيانات ملفات تعريف الارتباط. |
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 ;