A libcurl a proxy konfigurációját ahhoz az easy handle-hez csatolja, amely az átvitelt végzi. Állítsa be a közvetítő címét azon a handle-en, miközben a CURLOPT_URL a cél URL marad.

A következő részlet feltételezi, hogy a libcurl inicializálva van, és a handle érvényes 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));

Tartsa életben a hibapuffert, amíg a handle hivatkozik rá. A hatókör elhagyása előtt tisztítsa meg a handle-t, vagy cserélje ki, illetve törölje annak CURLOPT_ERRORBUFFER mutatóját. A proxy gazdagépneve helyőrző; a HTTP proxy listából származó hitelesítetlen jelölt biztosíthatja a címet ehhez a nyilvános webhelyteszthez. Használja annak tényleges sémáját és portját, és ellenőrizze, hogy engedélyezi-e az HTTPS-alagutat.

Az HTTPS-cél használhat HTTP-proxyt. A libcurl kezeli az alagutat ehhez az HTTPS-átvitelhez. A proxybeállításban lévő http:// a közvetítővel való kapcsolatot írja le. Csak akkor változtassa https://-re, ha a proxyvégpont valóban elfogad TLS-t, és a libcurl build támogatja azt.

Tegye szándékossá a tényleges útvonalat

Az explicit proxybeállítás felülírja a megfelelő proxykörnyezeti beállítást. A megkerülés külön döntés: az örökölt no_proxy továbbra is kizárhatja a célt. Ha ennek a handle-nek a kiválasztott proxyt kell használnia minden kapott célhoz, állítsa be a CURLOPT_NOPROXY-t üres karakterláncként az adott szabályzat részeként.

Ezzel szemben a CURLOPT_PROXY üres karakterláncra állítása kifejezetten letiltja a proxy használatát. A NULL-re állítás eltávolítja az explicit hozzárendelést, és ismét engedélyezi a környezetalapú viselkedést. Ez a két érték különböző célokat szolgál.

Egy célspecifikus fejléc, például a Content-Type: text/xml, nem választja ki a proxyt. Csak akkor adja hozzá, ha a tényleges kéréstörzsnek és a cél API-nak szüksége van erre a médiatípusra.

Olvassa el a HTTP-eredményt is

Egy sikeres curl_easy_perform nem jelenti azt, hogy a webhely sikeres HTTP-státuszt adott vissza. Olvassa el a CURLINFO_RESPONSE_CODE-t, és alkalmazza az alkalmazás státuszkezelését. A proxy CONNECT-válaszának saját értéke van, CURLINFO_HTTP_CONNECTCODE; az alagút elutasítása minden webhelyválasz előtt történik.

A CURLOPT_FAILONERROR sok HTTP-hibát kezelhet sikertelenként, de a dokumentációja kiemeli a hitelesítési kivételeket. Tartsa külön a proxy 407-es kihívását a cél státuszától.

Kapcsolódó cikkek