libcurl piesaista proksija konfigurāciju tam easy handle, kas veic pārsūtīšanu. Iestatiet starpnieka adresi šajā handle, atstājot CURLOPT_URL kā galamērķa URL.

Nākamais fragments pieņem, ka libcurl ir inicializēts un handle ir derīgs 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));

Turiet kļūdu buferi dzīvu, kamēr handle uz to atsaucas. Pirms tā tvēruma atstāšanas notīriet handle vai aizstājiet, vai notīriet tā CURLOPT_ERRORBUFFER rādītāju. Proksija resursdatora nosaukums ir vietturis; neautentificēts kandidāts no HTTP proksiju saraksta var nodrošināt adresi šim publiskās vietnes testam. Izmantojiet tā faktisko shēmu un portu un pārbaudiet, vai tas atļauj HTTPS tuneli.

HTTPS galamērķis var izmantot HTTP proksiju. libcurl pārvalda tuneli šai HTTPS pārsūtīšanai. http:// proksija opcijā apraksta savienojumu ar starpnieku. Mainiet to uz https:// tikai tādam proksija galapunktam, kas patiešām pieņem TLS, un tādam libcurl būvējumam, kas to atbalsta.

Padariet efektīvo maršrutu apzinātu

Skaidra proksija opcija ignorē atbilstošo proksija vides iestatījumu. Apiešana ir atsevišķs lēmums: mantots no_proxy joprojām var izslēgt galamērķi. Ja šim handle ir jāizmanto izvēlētais proksijs katram tam dotajam galamērķim, konfigurējiet CURLOPT_NOPROXY kā tukšu virkni šīs politikas ietvaros.

Pretēji tam, CURLOPT_PROXY iestatīšana uz tukšu virkni skaidri atspējo proksija lietošanu. Iestatīšana uz NULL noņem skaidro piešķīrumu un atkal pieļauj uz vidi balstītu uzvedību. Šīs divas vērtības kalpo dažādiem mērķiem.

Mērķim raksturīgs galvenis, piemēram, Content-Type: text/xml, neizvēlas proksiju. Pievienojiet to tikai tad, kad faktiskajam pieprasījuma pamattekstam un galamērķa API ir nepieciešams šis medija tips.

Lasiet arī HTTP rezultātu

Veiksmīgs curl_easy_perform nenozīmē, ka vietne atgrieza veiksmīgu HTTP statusu. Lasiet CURLINFO_RESPONSE_CODE un piemērojiet lietojumprogrammas statusa apstrādi. Proksija CONNECT atbildei ir sava vērtība, CURLINFO_HTTP_CONNECTCODE; tuneļa noraidīšana notiek pirms jebkuras vietnes atbildes.

CURLOPT_FAILONERROR var uzskatīt daudzas HTTP kļūdas par neveiksmēm, taču tā dokumentācija norāda autentifikācijas izņēmumus. Turiet proksija 407 izaicinājumu atsevišķi no galamērķa statusa.

Saistītie raksti