libcurl သည် proxy ဖွဲ့စည်းမှုကို ပို့ဆောင်မှု လုပ်ဆောင်သော easy handle နှင့် ချိတ်ဆက်သည်။ ကြားခံ၏ လိပ်စာကို ထို 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 က ၎င်းကို ရည်ညွှန်းနေသရွေ့ အမှား buffer ကို အသက်ရှင်နေစေပါ။ ၎င်း၏ နယ်ပယ်မှ မထွက်မီ handle ကို ရှင်းလင်းပါ သို့မဟုတ် ၎င်း၏ CURLOPT_ERRORBUFFER ညွှန်ကို အစားထိုးပါ သို့မဟုတ် ရှင်းပါ။ proxy hostname သည် နေရာလွတ် ဖြစ်သည်။ HTTP proxy စာရင်းမှ အတည်ပြုမထားသော ကိုယ်စားလှယ်လောင်းသည် ဤအများသူငှာ ဆိုက်စမ်းသပ်မှုအတွက် လိပ်စာကို ပေးနိုင်သည်။ ၎င်း၏ အမှန်တကယ် scheme နှင့် port ကို အသုံးပြုပြီး HTTPS tunnel ကို ခွင့်ပြုခြင်း ရှိ/မရှိ စစ်ဆေးပါ။

HTTPS ဦးတည်ချက်သည် HTTP proxy ကို အသုံးပြုနိုင်သည်။ libcurl သည် ထို HTTPS ပို့ဆောင်မှုအတွက် tunnel ကို ကိုင်တွယ်သည်။ proxy option ရှိ http:// သည် ကြားခံနှင့် ချိတ်ဆက်မှုကို ဖော်ပြသည်။ TLS ကို အမှန်တကယ် လက်ခံသော proxy endpoint နှင့် ၎င်းကို ပံ့ပိုးသော libcurl build အတွက်သာ https:// သို့ ပြောင်းပါ။

ထိရောက်သော လမ်းကြောင်းကို တမင်တကာ ဖန်တီးပါ

တိကျသော 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 အမှား အများအပြားကို မအောင်မြင်မှုအဖြစ် သတ်မှတ်နိုင်သော်လည်း ၎င်း၏ စာရွက်စာတမ်းတွင် အတည်ပြုခြင်း ခြွင်းချက်များကို ဖော်ပြထားသည်။ proxy ၏ 407 စိန်ခေါ်မှုကို ဦးတည်ချက်၏ အခြေအနေနှင့် သီးခြား ထားပါ။

ဆက်စပ်ဆောင်းပါးများ