libcurl kopplar proxykonfigurationen till det easy handle som utför överföringen. Ange förmedlarens adress på det handleet, medan CURLOPT_URL förblir mål-URL:en.

Följande utdrag förutsätter att libcurl har initierats och att handle är ett giltigt 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));

Håll felbufferten vid liv så länge handleet refererar till den. Innan du lämnar dess omfång rensar du handleet eller ersätter eller tömmer dess CURLOPT_ERRORBUFFER-pekare. Proxyvärdnamnet är en platshållare; en oautentiserad kandidat från HTTP-proxylistan kan tillhandahålla adressen för detta test på en offentlig webbplats. Använd dess faktiska schema och port och kontrollera om den tillåter HTTPS-tunneln.

Ett HTTPS-mål kan använda en HTTP-proxy. libcurl hanterar tunneln för den HTTPS-överföringen. http:// i proxyalternativet beskriver anslutningen till förmedlaren. Ändra det till https:// endast för en proxyändpunkt som faktiskt accepterar TLS och en libcurl-byggnad som stöder det.

Gör den effektiva vägen avsiktlig

Ett explicit proxyalternativ åsidosätter motsvarande proxy-miljöinställning. Kringgående är ett separat beslut: en ärvd no_proxy kan fortfarande utesluta målet. Om detta handle måste använda den valda proxyn för varje mål det får, konfigurera CURLOPT_NOPROXY som en tom sträng inom ramen för den policyn.

Omvänt inaktiverar inställningen av CURLOPT_PROXY till en tom sträng proxyanvändning explicit. Inställning till NULL tar bort den explicita tilldelningen och tillåter åter miljöbaserat beteende. Dessa två värden tjänar olika syften.

En målsspecifik rubrik som Content-Type: text/xml väljer inte proxyn. Lägg till den bara när den faktiska förfrågningskroppen och mål-API:et behöver den medietypen.

Läs även HTTP-resultatet

En lyckad curl_easy_perform betyder inte att webbplatsen returnerade en lyckad HTTP-status. Läs CURLINFO_RESPONSE_CODE och tillämpa applikationens statushantering. Proxyns CONNECT-svar har sitt eget värde, CURLINFO_HTTP_CONNECTCODE; en tunnelavvisning föregår varje webbplatssvar.

CURLOPT_FAILONERROR kan behandla många HTTP-fel som misslyckanden, men dess dokumentation tar upp autentiseringsundantag. Håll en proxys 407-utmaning åtskild från målets status.

Relaterade artiklar