Vendosja e një proxy të qartë në një easy handle të libcurl
Konfiguroni një easy handle të libcurl për një proxy të caktuar dhe ndani gabimet e opsionit, dështimet e transferimit dhe statusin HTTP.
libcurl e lidh konfigurimin e proxy-t me easy handle-in që kryen transferimin. Vendosni adresën e ndërmjetësit në atë handle, duke lënë CURLOPT_URL si URL-në e destinacionit.
Fragmenti vijues supozon se libcurl është inicializuar dhe handle është një easy handle i vlefshëm:
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));
Mbajeni buferin e gabimeve të gjallë sa kohë handle-i i referohet atij. Përpara se të dilni nga shtrirja e tij, pastroni handle-in ose zëvendësoni ose fshini treguesin CURLOPT_ERRORBUFFER. Emri i hostit të proxy-t është një vendmbajtës; një kandidat i paautentikuar nga lista e proxy-ve HTTP mund të sigurojë adresën për këtë test të faqes publike. Përdorni skemën dhe portën e tij aktuale, dhe kontrolloni nëse lejon tunelin HTTPS.
Një destinacion HTTPS mund të përdorë një proxy HTTP. libcurl menaxhon tunelin për atë transferim HTTPS. http:// në opsionin e proxy-t përshkruan lidhjen me ndërmjetësin. Ndryshojeni në https:// vetëm për një pikë fundore proxy që pranon vërtet TLS dhe një ndërtim libcurl që e mbështet.
Bëjeni rrugën efektive të qëllimshme
Një opsion eksplicit proxy anashkalon cilësimin përkatës të mjedisit të proxy-t. Anashkalimi është një vendim i veçantë: një no_proxy i trashëguar mund ta përjashtojë ende destinacionin. Nëse ky handle duhet të përdorë proxy-n e zgjedhur për çdo destinacion që i jepet, konfiguroni CURLOPT_NOPROXY si një varg bosh si pjesë e asaj politike.
Në të kundërt, vendosja e CURLOPT_PROXY në një varg bosh çaktivizon shprehimisht përdorimin e proxy-t. Vendosja e tij në NULL heq caktimin eksplicit dhe lejon përsëri sjelljen e bazuar në mjedis. Këto dy vlera shërbejnë qëllime të ndryshme.
Një kokë specifike për objektivin si Content-Type: text/xml nuk e zgjedh proxy-n. Shtojeni vetëm kur trupi aktual i kërkesës dhe API-ja e destinacionit kanë nevojë për atë lloj medie.
Lexoni edhe rezultatin HTTP
Një curl_easy_perform i suksesshëm nuk do të thotë që faqja e internetit ktheu një status HTTP të suksesshëm. Lexoni CURLINFO_RESPONSE_CODE dhe zbatoni trajtimin e statusit të aplikacionit. Përgjigja CONNECT e proxy-t ka vlerën e vet, CURLINFO_HTTP_CONNECTCODE; një refuzim tuneli i paraprin çdo përgjigjeje të faqes.
CURLOPT_FAILONERROR mund të trajtojë shumë gabime HTTP si dështime, por dokumentacioni i tij përmend përjashtime autentikimi. Mbani sfidën 407 të proxy-t të ndarë nga statusi i destinacionit.