libcurl knytter proxykonfigurasjonen til easy handle-en som utfører overføringen. Angi mellommannens adresse på den handle-en, mens CURLOPT_URL forblir mål-URL-en.

Følgende utdrag forutsetter at libcurl er initialisert og at handle er en gyldig 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));

Hold feilbufferen i live så lenge handle-en refererer til den. Før du forlater dens omfang, rydder du opp handle-en eller erstatter eller tømmer CURLOPT_ERRORBUFFER-pekeren. Proxyens vertsnavn er en plassholder; en uautentisert kandidat fra HTTP-proxy-listen kan skaffe adressen for denne testen på et offentlig nettsted. Bruk dens faktiske scheme og port, og kontroller om den tillater HTTPS-tunnelen.

En HTTPS-destinasjon kan bruke en HTTP-proxy. libcurl håndterer tunnelen for den HTTPS-overføringen. http:// i proxyvalget beskriver forbindelsen til mellommannen. Endre det til https:// bare for et proxy-endepunkt som faktisk godtar TLS, og en libcurl-bygg som støtter det.

Gjør den effektive ruten bevisst

Et eksplisitt proxyvalg overstyrer den tilsvarende proxy-miljøinnstillingen. Omgåelse er en egen beslutning: en nedarvet no_proxy kan fortsatt utelukke destinasjonen. Hvis denne handle-en må bruke den valgte proxyen for hver destinasjon den får, konfigurer CURLOPT_NOPROXY som en tom streng som en del av den policyen.

Omvendt deaktiverer innstilling av CURLOPT_PROXY til en tom streng proxybruk eksplisitt. Innstilling til NULL fjerner den eksplisitte tildelingen og tillater igjen miljøbasert atferd. Disse to verdiene tjener ulike formål.

En målspesifikk header som Content-Type: text/xml velger ikke proxyen. Legg den bare til når den faktiske forespørselskroppen og destinasjonens API trenger den medietypen.

Les også HTTP-resultatet

En vellykket curl_easy_perform betyr ikke at nettstedet returnerte en vellykket HTTP-status. Les CURLINFO_RESPONSE_CODE og bruk applikasjonens statushåndtering. Proxyens CONNECT-svar har sin egen verdi, CURLINFO_HTTP_CONNECTCODE; en tunnelavvisning kommer før enhver nettstedrespons.

CURLOPT_FAILONERROR kan behandle mange HTTP-feil som feil, men dokumentasjonen fremhever autentiseringsunntak. Hold en proxys 407-utfordring atskilt fra destinasjonens status.

Relaterte artikler