يلحق libcurl إعدادات الوكيل بمقبض easy الذي ينفّذ النقل. اضبط عنوان الوسيط على ذلك المقبض، مع ترك CURLOPT_URL عنوان URL للوجهة.

يفترض المقطع التالي أن libcurl قد جُهّز وأن handle مقبض easy صالح:

char error[CURL_ERROR_SIZE] = {0};
CURLcode result;

result = curl_easy_setopt(handle, CURLOPT_ERRORBUFFER, error);
if (result == CURLE_OK)
    result = curl_easy_setopt(handle, CURLOPT_URL,
                              "https://example.com/");
if (result == CURLE_OK)
    result = curl_easy_setopt(handle, CURLOPT_PROXY,
                              "http://proxy.example:8080");
if (result == CURLE_OK)
    result = curl_easy_perform(handle);

if (result != CURLE_OK)
    fprintf(stderr, "%s\n", error[0] ? error
                                  : curl_easy_strerror(result));

أبقِ مخزن الأخطاء حيًّا ما دام المقبض يشير إليه. قبل مغادرة نطاقه، نظّف المقبض أو استبدل مؤشر CURLOPT_ERRORBUFFER أو امسحه. اسم مضيف الوكيل عنصر نائب؛ ويمكن لمرشح غير موثّق من قائمة وكلاء HTTP أن يوفّر العنوان لهذا الاختبار على موقع عام. استخدم مخططه ومنفذه الفعليين، وتحقق مما إذا كان يسمح بنفق HTTPS.

يمكن لوجهة HTTPS أن تستخدم وكيل HTTP. يتولى libcurl النفق لعملية نقل HTTPS تلك. يصف http:// في خيار الوكيل الاتصال بالوسيط. غيّره إلى https:// فقط لنقطة وكيل تقبل TLS فعليًا ولبناء libcurl يدعم ذلك.

اجعل المسار الفعلي متعمّدًا

يتجاوز خيار الوكيل الصريح إعداد بيئة الوكيل المقابل. التجاوز قرار منفصل: يمكن لـ no_proxy الموروث أن يستبعد الوجهة رغم ذلك. إذا كان على هذا المقبض استخدام الوكيل المختار لكل وجهة تُعطى له، فاضبط CURLOPT_NOPROXY كسلسلة فارغة ضمن تلك السياسة.

وعلى العكس، ضبط CURLOPT_PROXY على سلسلة فارغة يعطّل استخدام الوكيل صراحةً. أما ضبطه على NULL فيزيل الإسناد الصريح ويسمح مجددًا بالسلوك القائم على البيئة. تخدم هاتان القيمتان غرضين مختلفين.

ترويسة خاصة بالهدف مثل Content-Type: text/xml لا تختار الوكيل. أضفها فقط عندما يحتاج جسم الطلب الفعلي وواجهة API للوجهة إلى نوع الوسائط ذلك.

اقرأ نتيجة HTTP أيضًا

نجاح curl_easy_perform لا يعني أن الموقع أعاد حالة HTTP ناجحة. اقرأ CURLINFO_RESPONSE_CODE وطبّق معالجة الحالة الخاصة بالتطبيق. لرد CONNECT الخاص بالوكيل قيمته الخاصة، CURLINFO_HTTP_CONNECTCODE؛ ورفض النفق يسبق أي استجابة من الموقع.

يمكن لـ CURLOPT_FAILONERROR اعتبار كثير من أخطاء HTTP إخفاقات، لكن توثيقه يذكر استثناءات المصادقة. أبقِ تحدّي 407 الخاص بالوكيل منفصلًا عن حالة الوجهة.

مقالات ذات صلة