libcurl iqabbad il-konfigurazzjoni tal-proxy mal-easy handle li jwettaq it-trasferiment. Issettja l-indirizz tal-intermedjarju fuq dak il-handle, filwaqt li CURLOPT_URL jibqa' l-URL tad-destinazzjoni.

Is-silta li ġejja tassumi li libcurl ġie inizjalizzat u li handle huwa easy handle validu:

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

Żomm il-buffer tal-iżbalji ħaj sakemm il-handle jirreferi għalih. Qabel ma toħroġ mill-ambitu tiegħu, naddaf il-handle jew ibdel jew ħassar il-pointer CURLOPT_ERRORBUFFER tiegħu. L-isem tal-host tal-proxy huwa placeholder; kandidat mhux awtentikat mil-lista tal-proxy HTTP jista' jipprovdi l-indirizz għal dan it-test fuq sit pubbliku. Uża l-iskema u l-port reali tiegħu, u verifika jekk jippermettix it-tunnel HTTPS.

Destinazzjoni HTTPS tista' tuża proxy HTTP. libcurl imexxi t-tunnel għal dak it-trasferiment HTTPS. Il-http:// fl-għażla tal-proxy jiddeskrivi l-konnessjoni mal-intermedjarju. Ibdel għal https:// biss għal endpoint tal-proxy li tassew jaċċetta TLS u build tal-libcurl li jappoġġjah.

Agħmel ir-rotta effettiva deliberata

Għażla espliċita tal-proxy tissostitwixxi s-setting tal-ambjent tal-proxy korrispondenti. Il-bypass huwa deċiżjoni separata: no_proxy wirt jista' xorta jeskludi d-destinazzjoni. Jekk dan il-handle għandu juża l-proxy magħżul għal kull destinazzjoni li jingħata, ikkonfigura CURLOPT_NOPROXY bħala string vojta bħala parti minn dik il-politika.

Bil-maqlub, l-issetjar ta' CURLOPT_PROXY għal string vojta b'mod espliċitu jiddiżattiva l-użu tal-proxy. L-issetjar tiegħu għal NULL ineħħi l-assenjazzjoni espliċita u jerġa' jippermetti mġiba bbażata fuq l-ambjent. Dawk iż-żewġ valuri jaqdu skopijiet differenti.

Header speċifiku għall-mira bħal Content-Type: text/xml ma jagħżilx il-proxy. Żidu biss meta l-korp tar-rikjesta reali u l-API tad-destinazzjoni jkunu jeħtieġu dak it-tip ta' midja.

Aqra wkoll ir-riżultat HTTP

curl_easy_perform b'suċċess ma jfissirx li l-websajt irritornat stat HTTP b'suċċess. Aqra CURLINFO_RESPONSE_CODE u applika l-immaniġġjar tal-istat tal-applikazzjoni. It-tweġiba CONNECT tal-proxy għandha l-valur tagħha stess, CURLINFO_HTTP_CONNECTCODE; rifjut tat-tunnel jiġi qabel kull tweġiba tal-websajt.

CURLOPT_FAILONERROR jista' jqis ħafna żbalji HTTP bħala fallimenti, iżda d-dokumentazzjoni tiegħu ssemmi eċċezzjonijiet tal-awtentikazzjoni. Żomm l-isfida 407 tal-proxy separata mill-istat tad-destinazzjoni.

Artikli relatati