libcurl proxy کی ترتیب کو اس easy handle سے منسلک کرتا ہے جو transfer انجام دیتا ہے۔ درمیانی کے پتے کو اسی handle پر مقرر کریں، جبکہ CURLOPT_URL کو منزل URL ہی رہنے دیں۔

درج ذیل حصہ فرض کرتا ہے کہ libcurl شروع ہو چکا ہے اور handle درست easy handle ہے:

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));

جب تک handle اس کا حوالہ دیتا ہے، error buffer کو زندہ رکھیں۔ اس کے دائرے سے نکلنے سے پہلے handle صاف کریں یا اس کے CURLOPT_ERRORBUFFER pointer کو بدلیں یا مٹا دیں۔ proxy کا hostname placeholder ہے؛ HTTP proxy فہرست سے کوئی غیر تصدیق شدہ امیدوار اس عوامی سائٹ کے امتحان کے لیے پتہ دے سکتا ہے۔ اس کی اصل scheme اور port استعمال کریں، اور دیکھیں کہ آیا یہ HTTPS tunnel کی اجازت دیتا ہے۔

HTTPS منزل HTTP proxy استعمال کر سکتی ہے۔ libcurl اس HTTPS transfer کے لیے tunnel سنبھالتا ہے۔ proxy option میں http:// درمیانی سے رابطے کی وضاحت کرتا ہے۔ اسے https:// میں صرف اسی proxy endpoint کے لیے بدلیں جو واقعی TLS قبول کرتا ہو اور ایسے libcurl build کے لیے جو اس کی معاونت کرتا ہو۔

مؤثر راستے کو دانستہ بنائیں

واضح proxy option متعلقہ proxy ماحول کی ترتیب کو اوور رائیڈ کرتا ہے۔ بائی پاس ایک الگ فیصلہ ہے: وراثت میں ملا no_proxy پھر بھی منزل کو خارج کر سکتا ہے۔ اگر یہ handle کو دی گئی ہر منزل کے لیے منتخب proxy استعمال کرنا ضروری ہو، تو اس پالیسی کے حصے کے طور پر CURLOPT_NOPROXY کو خالی string کے طور پر ترتیب دیں۔

اس کے برعکس، CURLOPT_PROXY کو خالی string پر مقرر کرنا proxy کے استعمال کو واضح طور پر بند کرتا ہے۔ اسے NULL پر مقرر کرنا واضح تفویض ہٹاتا ہے اور ماحول پر مبنی رویے کو دوبارہ اجازت دیتا ہے۔ یہ دونوں اقدار مختلف مقاصد کے لیے ہیں۔

Content-Type: text/xml جیسی ہدف مخصوص header proxy منتخب نہیں کرتی۔ اسے صرف اس وقت شامل کریں جب اصل درخواست body اور منزل API کو اس میڈیا قسم کی ضرورت ہو۔

HTTP نتیجہ بھی پڑھیں

کامیاب curl_easy_perform کا مطلب یہ نہیں کہ ویب سائٹ نے کامیاب HTTP کیفیت واپس کی۔ CURLINFO_RESPONSE_CODE پڑھیں اور ایپلیکیشن کی کیفیت کی سنبھال لاگو کریں۔ proxy کے CONNECT جواب کی اپنی قدر ہے، CURLINFO_HTTP_CONNECTCODE؛ tunnel کی مستردگی کسی بھی ویب سائٹ جواب سے پہلے آتی ہے۔

CURLOPT_FAILONERROR بہت سی HTTP غلطیوں کو ناکامی سمجھ سکتا ہے، لیکن اس کی دستاویزات authentication کے استثناؤں کا ذکر کرتی ہیں۔ proxy کے 407 چیلنج کو منزل کی کیفیت سے الگ رکھیں۔

متعلقہ مضامین