Selgesõnalise puhverserveri seadmine libcurl easy handle'ile
Seadistage libcurl easy handle kindla puhverserveri jaoks ning eraldage valikuvigade, ülekandetõrgete ja HTTP-oleku käsitlus.
libcurl seob puhverserveri konfiguratsiooni easy handle'iga, mis ülekande teeb. Määrake vahendaja aadress sellele handle'ile, jättes CURLOPT_URL sihtkoha URL-iks.
Järgnev lõik eeldab, et libcurl on algatatud ja handle on kehtiv 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));
Hoidke veapuhver elus seni, kuni handle sellele viitab. Enne selle ulatusest lahkumist puhastage handle või asendage või tühjendage selle CURLOPT_ERRORBUFFER osuti. Puhverserveri hostinimi on kohatäitja; autentimata kandidaat HTTP-puhverserverite loendist võib anda aadressi selle avaliku saidi testi jaoks. Kasutage selle tegelikku skeemi ja porti ning kontrollige, kas see lubab HTTPS-tunnelit.
HTTPS-sihtkoht võib kasutada HTTP-puhverserverit. libcurl haldab selle HTTPS-ülekande tunnelit. Puhverserveri valikus olev http:// kirjeldab ühendust vahendajaga. Muutke see https://-ks ainult puhverserveri lõpp-punkti puhul, mis tegelikult TLS-i vastu võtab, ja libcurl-i buildi puhul, mis seda toetab.
Tehke tegelik marsruut teadlikuks
Selgesõnaline puhverserveri valik alistab vastava puhverserveri keskkonnaseade. Möödaminek on eraldi otsus: päritud no_proxy võib sihtkoha siiski välistada. Kui see handle peab kasutama valitud puhverserverit iga talle antud sihtkoha jaoks, seadistage CURLOPT_NOPROXY tühjaks stringiks selle poliitika osana.
Vastupidi, CURLOPT_PROXY tühjaks stringiks seadmine keelab puhverserveri kasutamise selgesõnaliselt. Selle seadmine NULL-le eemaldab selgesõnalise omistamise ja lubab taas keskkonnapõhist käitumist. Need kaks väärtust teenivad erinevaid eesmärke.
Sihtkohaspetsiifiline päis nagu Content-Type: text/xml ei vali puhverserverit. Lisage see ainult siis, kui tegelik päringu keha ja sihtkoha API vajavad seda meediatüüpi.
Lugege ka HTTP-tulemust
Edukas curl_easy_perform ei tähenda, et veebisait tagastas eduka HTTP-oleku. Lugege CURLINFO_RESPONSE_CODE ja rakendage rakenduse olekukäsitlust. Puhverserveri CONNECT-vastusel on oma väärtus, CURLINFO_HTTP_CONNECTCODE; tunneli tagasilükkamine eelneb igale veebisaidi vastusele.
CURLOPT_FAILONERROR võib paljusid HTTP-vigu käsitleda ebaõnnestumistena, kuid selle dokumentatsioon toob esile autentimise erandid. Hoidke puhverserveri 407 väljakutse sihtkoha olekust eraldi.