Eksplisiittisen välityspalvelimen asettaminen libcurl easy handle -kahvaan
Määritä libcurl easy handle tietylle välityspalvelimelle ja erota asetusvirheet, siirtovirheet ja HTTP-tila.
libcurl liittää välityspalvelimen määrityksen siirron tekevään easy handle -kahvaan. Aseta välittäjän osoite kyseiseen kahvaan ja jätä CURLOPT_URL kohde-URL:ksi.
Seuraava katkelma olettaa, että libcurl on alustettu ja handle on kelvollinen 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));
Pidä virhepuskuri elossa niin kauan kuin kahva viittaa siihen. Ennen sen laajuudesta poistumista siivoa kahva tai korvaa tai tyhjennä sen CURLOPT_ERRORBUFFER-osoitin. Välityspalvelimen isäntänimi on paikkamerkki; todentamaton ehdokas HTTP-välityspalvelinluettelosta voi tarjota osoitteen tähän julkisen sivuston testiin. Käytä sen todellista skeemaa ja porttia ja tarkista, salliiko se HTTPS-tunnelin.
HTTPS-kohde voi käyttää HTTP-välityspalvelinta. libcurl hoitaa tunnelin kyseiselle HTTPS-siirrolle. Välityspalvelinasetuksen http:// kuvaa yhteyttä välittäjään. Vaihda se https://-muotoon vain välityspalvelimen päätepisteelle, joka todella hyväksyy TLS:n, ja libcurl-koonnille, joka tukee sitä.
Tee tehokkaasta reitistä tarkoituksellinen
Eksplisiittinen välityspalvelinasetus ohittaa vastaavan välityspalvelimen ympäristöasetuksen. Ohitus on erillinen päätös: peritty no_proxy voi silti jättää kohteen pois. Jos tämän kahvan on käytettävä valittua välityspalvelinta jokaiselle sille annetulle kohteelle, määritä CURLOPT_NOPROXY tyhjäksi merkkijonoksi osana kyseistä käytäntöä.
Päinvastoin CURLOPT_PROXY:n asettaminen tyhjäksi merkkijonoksi poistaa välityspalvelimen käytön eksplisiittisesti käytöstä. Asettaminen arvoon NULL poistaa eksplisiittisen määrityksen ja sallii jälleen ympäristöperusteisen toiminnan. Nämä kaksi arvoa palvelevat eri tarkoituksia.
Kohdekohtainen otsake, kuten Content-Type: text/xml, ei valitse välityspalvelinta. Lisää se vain, kun varsinainen pyyntörunko ja kohteen API tarvitsevat kyseistä mediatyyppiä.
Lue myös HTTP-tulos
Onnistunut curl_easy_perform ei tarkoita, että verkkosivusto palautti onnistuneen HTTP-tilan. Lue CURLINFO_RESPONSE_CODE ja sovella sovelluksen tilankäsittelyä. Välityspalvelimen CONNECT-vastauksella on oma arvonsa, CURLINFO_HTTP_CONNECTCODE; tunnelin hylkäys edeltää mitä tahansa verkkosivuston vastausta.
CURLOPT_FAILONERROR voi kohdella monia HTTP-virheitä epäonnistumisina, mutta sen dokumentaatio mainitsee todentamisen poikkeukset. Pidä välityspalvelimen 407-haaste erillään kohteen tilasta.