’n Eksplisiete proxy op ’n libcurl easy handle plaas
Konfigureer ’n libcurl easy handle vir ’n spesifieke proxy en skei opsiefoute, oordragfoute en HTTP-status.
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.