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 ໃຫ້ແຍກຈາກສະຖານະປາຍທາງ.

ບົດຄວາມທີ່ກ່ຽວຂ້ອງ