تحويل curl إلى C

يقوم curl2code بتحويل أوامر curl إلى كود C باستخدام libcurl. تتم عملية التحويل في متصفحك عبر WebAssembly لخصوصية تامة. لـ Rust، راجع محول curl إلى Rust. لـ Go، راجع curl إلى Go. أدناه أمثلة C عملية مع إدارة صحيحة للذاكرة.

كيفية نسخ curl من متصفحك

  1. 1

    افتح أدوات المطور (DevTools)

    اضغط على F12 أو Ctrl+Shift+I لفتح أدوات مطور المتصفح.

  2. 2

    انتقل إلى علامة تبويب الشبكة (Network)

    انقر فوق علامة التبويب Network وقم بالإجراء الذي يؤدي إلى إرسال طلب HTTP.

  3. 3

    نسخ كـ cURL

    انقر بزر الماوس الأيمن على الطلب ← CopyCopy as cURL. ثم قم بلصقه أعلاه.

الأسئلة الشائعة

ما هي libcurl؟

libcurl هي مكتبة C التي تقف وراء أداة سطر أوامر curl. إنها مكتبة عميل HTTP الأكثر قابلية للنقل والانتشار على الإطلاق، حيث تدعم أكثر من 25 بروتوكولاً. تستخدمها آلاف التطبيقات والأنظمة المدمجة. أضفها باستخدام مدير حزم النظام الخاص بك أو اربطها بشكل ثابت. يقوم curl2code بتوليد كود libcurl C باستخدام الواجهة السهلة (easy interface).

واجهة libcurl easy مقابل multi — أيهما أستخدم؟

الواجهة السهلة easy interface (curl_easy_*) مخصصة لعمليات النقل المتزامنة الفردية — بسيطة ومباشرة. الواجهة المتعددة multi interface (curl_multi_*) تتيح عمليات نقل متزامنة غير حاجزة في خيط واحد (thread). استخدم easy للسكربتات والأدوات البسيطة، و multi للتطبيقات عالية الأداء. للغة من عائلة C ذات مستوى أعلى، راجع curl إلى Rust.

كيفية التعامل مع المصادقة باستخدام libcurl؟

لـ Bearer: اضبط ترويسة مخصصة باستخدام curl_slist_append(headers, "Authorization: Bearer token"). للمصادقة الأساسية: curl_easy_setopt(curl, CURLOPT_USERPWD, "user:pass"). تقوم libcurl بترميز بيانات اعتماد المصادقة الأساسية تلقائيًا. يقوم curl2code بتحويل أعلام -u والترويسات إلى استدعاءات C API الصحيحة.

كيفية إرسال بيانات النموذج متعدد الأجزاء باستخدام libcurl؟

استخدم MIME API (libcurl 7.56+): curl_mime_init() لإنشاء هيكل mime، و curl_mime_addpart() لكل حقل، و curl_mime_name() و curl_mime_filedata() لرفع الملفات. اضبط باستخدام CURLOPT_MIMEPOST. حرر الموارد باستخدام curl_mime_free().

كيفية التعامل مع الأخطاء باستخدام libcurl؟

كل دالة curl_easy_* تعيد CURLcode — تحقق منه مقابل CURLE_OK. استخدم curl_easy_strerror(code) للحصول على رسائل مقروءة بشريًا. اضبط CURLOPT_ERRORBUFFER لسلاسل أخطاء مفصلة. احصل على حالة HTTP باستخدام curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &code).

كيفية إدارة الذاكرة باستخدام libcurl؟

استدعِ دائمًا curl_easy_cleanup() عند الانتهاء من المقبض (handle). حرر قوائم الترويسات باستخدام curl_slist_free_all(). حرر هياكل MIME باستخدام curl_mime_free(). لمعاودات الاتصال الخاصة بالكتابة (write callbacks)، قم بإدارة تخصيص المخزن المؤقت الخاص بك. استدعِ curl_global_cleanup() مرة واحدة عند الخروج من البرنامج. الفشل في تحرير الموارد يسبب تسربًا في الذاكرة.

كيفية ضبط المهلة باستخدام libcurl؟

اضبط CURLOPT_CONNECTTIMEOUT لمهلة الاتصال و CURLOPT_TIMEOUT لوقت النقل الإجمالي (كلاهما بالثواني). لدقة المللي ثانية، استخدم CURLOPT_CONNECTTIMEOUT_MS و CURLOPT_TIMEOUT_MS. هذه هي نفس الخيارات التي يستخدمها curl CLI مع --connect-timeout و --max-time.

كيفية تهيئة بروكسي باستخدام libcurl؟

اضبط CURLOPT_PROXY على عنوان URL للبروكسي: curl_easy_setopt(curl, CURLOPT_PROXY, "http://proxy:8080"). لـ SOCKS5: اضبط CURLOPT_PROXYTYPE على CURLPROXY_SOCKS5. لمصادقة البروكسي: CURLOPT_PROXYUSERPWD. تحترم libcurl أيضًا متغير البيئة http_proxy.

كيف يمكن إرسال طلب POST مع جسم JSON في C؟

قم بتحويل أمر curl POST مثل curl -X POST -H "Content-Type: application/json" -d "{"key":"value"}" URL إلى C باستخدام curl2code. يستخدم الكود الناتج curl_easy_setopt(curl, CURLOPT_POSTFIELDS, json_string). يقوم curl2code تلقائيًا باكتشاف وسوم -d/--data التي تحتوي على محتوى JSON ويضبط ترويسة Content-Type المناسبة في كود libcurl.

كيف يمكن إضافة مصادقة Bearer token في C؟

قم بتمرير curl -H "Authorization: Bearer YOUR_TOKEN" URL إلى curl2code وسيقوم بإنشاء كود libcurl مع ترويسة المصادقة: struct curl_slist *headers = curl_slist_append(NULL, "Authorization: Bearer TOKEN"). يكتشف curl2code رموز Bearer من كل من وسوم -H "Authorization: Bearer ..." و --oauth2-bearer. بالنسبة لـ Basic auth، استخدم -u user:pass.

كيف يمكن ضبط ترويسة Content-Type في C؟

يقوم curl2code بتحويل curl -H "Content-Type: application/json" URL إلى كود libcurl مع الترويسة المناسبة: curl_slist_append(headers, "Content-Type: application/json"). بالنسبة لبيانات -d، يستخدم curl افتراضيًا application/x-www-form-urlencoded؛ أما بالنسبة لرفع النماذج باستخدام -F، فإنه يستخدم multipart/form-data. يقوم curl2code بربط كل منها بـ API الصحيح في libcurl.

روابط مفيدة

أدلة curl

تحويل curl إلى لغات أخرى