ການຕັ້ງ proxy ທີ່ຊັດເຈນໃສ່ easy handle ຂອງ libcurl
ຕັ້ງຄ່າ easy handle ຂອງ libcurl ສຳລັບ proxy ສະເພາະ ແລະ ແຍກຂໍ້ຜິດພາດຂອງ option, ການລົ້ມເຫຼວຂອງການຖ່າຍໂອນ ແລະ ສະຖານະ HTTP.
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));
ຮັກສາ buffer ຂໍ້ຜິດພາດໃຫ້ມີຊີວິດຕະຫຼອດເວລາທີ່ handle ອ້າງອີງເຖິງມັນ. ກ່ອນອອກຈາກເຂດຂອງມັນ, ເຮັດຄວາມສະອາດ handle ຫຼື ປ່ຽນ ຫຼື ລຶບ pointer CURLOPT_ERRORBUFFER ຂອງມັນ. ຊື່ host ຂອງ proxy ແມ່ນຕົວແທນ; ຜູ້ສະໝັກທີ່ບໍ່ໄດ້ຢືນຢັນຈາກ ລາຍຊື່ proxy HTTP ສາມາດໃຫ້ທີ່ຢູ່ສຳລັບການທົດສອບເວັບໄຊສາທາລະນະນີ້. ໃຊ້ scheme ແລະ port ຕົວຈິງຂອງມັນ, ແລະ ກວດສອບວ່າມັນອະນຸຍາດ tunnel HTTPS ຫຼືບໍ່.
ປາຍທາງ HTTPS ສາມາດໃຊ້ proxy HTTP. libcurl ຈັດການ tunnel ສຳລັບການຖ່າຍໂອນ HTTPS ນັ້ນ. http:// ໃນ option proxy ອະທິບາຍການເຊື່ອມຕໍ່ກັບຕົວກາງ. ປ່ຽນມັນເປັນ https:// ສະເພາະສຳລັບປາຍທາງ proxy ທີ່ຍອມຮັບ TLS ຕົວຈິງ ແລະ build libcurl ທີ່ຮອງຮັບມັນ.
ເຮັດໃຫ້ເສັ້ນທາງທີ່ມີປະສິດທິພາບເປັນເຈດຕະນາ
option proxy ທີ່ຊັດເຈນຈະຂ້າມການຕັ້ງຄ່າສະພາບແວດລ້ອມ proxy ທີ່ກ່ຽວຂ້ອງ. ການຂ້າມແມ່ນການຕັດສິນໃຈແຍກຕ່າງຫາກ: no_proxy ທີ່ສືບທອດມາຍັງສາມາດຍົກເວັ້ນປາຍທາງໄດ້. ຖ້າ handle ນີ້ຕ້ອງໃຊ້ proxy ທີ່ເລືອກສຳລັບທຸກປາຍທາງທີ່ມັນໄດ້ຮັບ, ຕັ້ງຄ່າ CURLOPT_NOPROXY ເປັນ string ຫວ່າງເປົ່າເປັນສ່ວນໜຶ່ງຂອງນະໂຍບາຍນັ້ນ.
ກົງກັນຂ້າມ, ການຕັ້ງ CURLOPT_PROXY ເປັນ string ຫວ່າງເປົ່າຈະປິດການໃຊ້ proxy ຢ່າງຊັດເຈນ. ການຕັ້ງມັນເປັນ NULL ຈະລຶບການມອບໝາຍທີ່ຊັດເຈນ ແລະ ອະນຸຍາດພຶດຕິກຳທີ່ອີງໃສ່ສະພາບແວດລ້ອມອີກຄັ້ງ. ສອງຄ່ານັ້ນຮັບໃຊ້ຈຸດປະສົງທີ່ແຕກຕ່າງກັນ.
header ສະເພາະເປົ້າໝາຍເຊັ່ນ Content-Type: text/xml ບໍ່ໄດ້ເລືອກ proxy. ເພີ່ມມັນສະເພາະເມື່ອຮ່າງຄຳຂໍຕົວຈິງ ແລະ API ປາຍທາງຕ້ອງການປະເພດສື່ນັ້ນ.
ອ່ານຜົນ HTTP ນຳ
curl_easy_perform ທີ່ສຳເລັດບໍ່ໄດ້ໝາຍຄວາມວ່າເວັບໄຊໄດ້ສົ່ງຄືນສະຖານະ HTTP ທີ່ສຳເລັດ. ອ່ານ CURLINFO_RESPONSE_CODE ແລະ ນຳໃຊ້ການຈັດການສະຖານະຂອງແອັບພລິເຄຊັນ. ການຕອບ CONNECT ຂອງ proxy ມີຄ່າຂອງມັນເອງ, CURLINFO_HTTP_CONNECTCODE; ການປະຕິເສດ tunnel ເກີດຂຶ້ນກ່ອນການຕອບສະໜອງຂອງເວັບໄຊໃດໆ.
CURLOPT_FAILONERROR ສາມາດຖືວ່າຂໍ້ຜິດພາດ HTTP ຫຼາຍຢ່າງເປັນຄວາມລົ້ມເຫຼວ, ແຕ່ເອກະສານຂອງມັນກ່າວເຖິງຂໍ້ຍົກເວັ້ນການຢືນຢັນ. ເກັບການທ້າທາຍ 407 ຂອງ proxy ໃຫ້ແຍກຈາກສະຖານະປາຍທາງ.