libcurl heg die proxy-konfigurasie aan die easy handle wat die oordrag uitvoer. Stel die tussenganger se adres op daardie handle in, terwyl CURLOPT_URL as die bestemming-URL gelaat word.

Die volgende fragment neem aan dat libcurl geïnisialiseer is en handle ’n geldige easy handle is:

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));

Hou die foutbuffer lewendig terwyl die handle daarna verwys. Voordat jy die bereik verlaat, ruim die handle op of vervang of wis sy CURLOPT_ERRORBUFFER-wyser. Die proxy-gasheernaam is ’n plekhouer; ’n ongeverifieerde kandidaat uit die HTTP-proxylys kan die adres vir hierdie publieke werf-toets verskaf. Gebruik sy werklike skema en poort, en kontroleer of hy die HTTPS-tonnel toelaat.

’n HTTPS-bestemming kan ’n HTTP-proxy gebruik. libcurl hanteer die tonnel vir daardie HTTPS-oordrag. Die http:// in die proxy-opsie beskryf die verbinding na die tussenganger. Verander dit na https:// slegs vir ’n proxy-eindpunt wat werklik TLS aanvaar en ’n libcurl-bou wat dit ondersteun.

Maak die effektiewe roete doelbewus

’n Eksplisiete proxy-opsie oorheers die ooreenstemmende proxy-omgewingsinstelling. Omseiling is ’n aparte besluit: ’n geërfde no_proxy kan die bestemming steeds uitsluit. As hierdie handle die gekose proxy vir elke bestemming wat dit kry moet gebruik, konfigureer CURLOPT_NOPROXY as ’n leë string as deel van daardie beleid.

Omgekeerd, deur CURLOPT_PROXY op ’n leë string te stel, skakel proxy-gebruik eksplisiet af. Om dit op NULL te stel, verwyder die eksplisiete toewysing en laat omgewingsgebaseerde gedrag weer toe. Daardie twee waardes dien verskillende doeleindes.

’n Teiken-spesifieke kop soos Content-Type: text/xml kies nie die proxy nie. Voeg dit slegs by wanneer die werklike versoekliggaam en die bestemming-API daardie media-tipe nodig het.

Lees ook die HTTP-resultaat

’n Suksesvolle curl_easy_perform beteken nie die webwerf het ’n suksesvolle HTTP-status teruggegee nie. Lees CURLINFO_RESPONSE_CODE en pas die toepassing se statushantering toe. Die proxy se CONNECT-antwoord het sy eie waarde, CURLINFO_HTTP_CONNECTCODE; ’n tonnelverwerping kom voor enige webwerf-antwoord.

CURLOPT_FAILONERROR kan baie HTTP-foute as mislukkings behandel, maar sy dokumentasie wys op outentikasie-uitsonderings. Hou ’n proxy se 407-uitdaging apart van die bestemming se status.

Verwante artikels