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.

Artikuj të ngjashëm