libcurl ligas la prokuran agordon al la easy handle, kiu plenumas la transporton. Starigu la adreson de la perilo sur tiu handle, lasante CURLOPT_URL kiel la celan URL-on.

La sekva fragmento supozas, ke libcurl estas pravalorigita kaj ke handle estas valida 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));

Tenu la erarbufron viva dum la handle referencas al ĝi. Antaŭ ol forlasi ĝian amplekson, purigu la handle aŭ anstataŭigu aŭ forviŝu ĝian montrilon CURLOPT_ERRORBUFFER. La gastigantnomo de la prokuro estas lokokupilo; neaŭtentikigita kandidato el la listo de HTTP-prokuroj povas liveri la adreson por ĉi tiu publika reteja testo. Uzu ĝian realan skemon kaj pordon, kaj kontrolu ĉu ĝi permesas la HTTPS-tunelon.

HTTPS-celo povas uzi HTTP-prokuron. libcurl traktas la tunelon por tiu HTTPS-transporto. La http:// en la prokura opcio priskribas la konekton al la perilo. Ŝanĝu ĝin al https:// nur por prokura finpunkto, kiu efektive akceptas TLS, kaj libcurl-konstruo, kiu subtenas ĝin.

Faru la efektivan itineron intenca

Eksplicita prokura opcio superregas la respondan prokuran medivariablon. Preterpasi estas aparta decido: heredita no_proxy ankoraŭ povas ekskludi la celon. Se ĉi tiu handle devas uzi la elektitan prokuron por ĉiu celo, kiun ĝi ricevas, agordu CURLOPT_NOPROXY kiel malplenan ĉenon ene de tiu politiko.

Male, agordi CURLOPT_PROXY al malplena ĉeno eksplicite malŝaltas la uzon de prokuro. Agordi ĝin al NULL forigas la eksplicitan atribuon kaj denove permesas medibazitan konduton. Tiuj du valoroj servas malsamajn celojn.

Celspecifa kapo kiel Content-Type: text/xml ne elektas la prokuron. Aldonu ĝin nur kiam la reala petkorpo kaj la cela API bezonas tiun meditipon.

Legu ankaŭ la HTTP-rezulton

Sukcesa curl_easy_perform ne signifas, ke la retejo redonis sukcesan HTTP-statuson. Legu CURLINFO_RESPONSE_CODE kaj apliku la statusan traktadon de la aplikaĵo. La CONNECT-respondo de la prokuro havas sian propran valoron, CURLINFO_HTTP_CONNECTCODE; tunela rifuzo antaŭas ĉiun retejan respondon.

CURLOPT_FAILONERROR povas trakti multajn HTTP-erarojn kiel malsukcesojn, sed ĝia dokumentaro mencias aŭtentikigajn esceptojn. Tenu la 407-defion de prokuro aparte de la statuso de la celo.

Rilataj artikoloj