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.

Aiheeseen liittyvät artikkelit