Að setja skýran proxy á libcurl easy handle
Stilltu libcurl easy handle fyrir tiltekna proxy og aðgreindu valvillur, flutningsmistök og HTTP-stöðu.
libcurl tengir proxy-stillinguna við easy handle-ið sem framkvæmir flutninginn. Stilltu slóð milliliðarins á það handle, en láttu CURLOPT_URL vera áfangastaðar-URL.
Eftirfarandi brot gerir ráð fyrir að libcurl sé frumstillt og að handle sé gilt 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));
Haltu villubufferinum lifandi á meðan handle-ið vísar í hann. Áður en þú yfirgefur svið þess skaltu hreinsa handle-ið eða skipta um eða hreinsa CURLOPT_ERRORBUFFER bendilinn. Proxy-hýsilnafnið er staðgengill; óstaðfestur kandídat úr HTTP-proxy listanum getur veitt slóðina fyrir þetta próf á opinberri síðu. Notaðu raunverulegt skema þess og port, og athugaðu hvort það leyfi HTTPS-göngin.
HTTPS-áfangastaður getur notað HTTP-proxy. libcurl sér um göngin fyrir þann HTTPS-flutning. http:// í proxy-valkostinum lýsir tengingunni við milliliðinn. Breyttu því í https:// aðeins fyrir proxy-endapunkt sem tekur raunverulega við TLS og libcurl-útgáfu sem styður það.
Gerðu virku leiðina viljandi
Skýr proxy-valkostur hnekkir samsvarandi proxy-umhverfisstillingu. Framhjáferð er sérstök ákvörðun: arfgefið no_proxy getur samt útilokað áfangastaðinn. Ef þetta handle verður að nota valda proxy-ið fyrir hvern áfangastað sem það fær, stilltu CURLOPT_NOPROXY sem tóman streng sem hluta af þeirri stefnu.
Aftur á móti slökkvir stilling CURLOPT_PROXY á tóman streng sérstaklega á proxy-notkun. Stilling á NULL fjarlægir skýru úthlutunina og leyfir aftur hegðun sem byggir á umhverfi. Þessi tvö gildi þjóna mismunandi tilgangi.
Markmiðssértæk haus eins og Content-Type: text/xml velur ekki proxy-ið. Bættu honum aðeins við þegar raunveruleg beiðnibody og API áfangastaðarins þurfa þá miðlatregund.
Lestu líka HTTP-niðurstöðuna
Árangursríkt curl_easy_perform þýðir ekki að vefsíðan hafi skilað árangursríkri HTTP-stöðu. Lestu CURLINFO_RESPONSE_CODE og beittu stöðumeðferð forritsins. CONNECT-svar proxy-sins hefur eigið gildi, CURLINFO_HTTP_CONNECTCODE; höfnun ganganna kemur á undan hvaða vefsíðusvari sem er.
CURLOPT_FAILONERROR getur meðhöndlað margar HTTP-villur sem mistök, en skjöl þess nefna undantekningar við auðkenningu. Haltu 407-áskorun proxy-sins aðskildri frá stöðu áfangastaðarins.