Explicit proxy beállítása libcurl easy handle-en
Konfiguráljon egy libcurl easy handle-t egy adott proxyhoz, és különítse el az opcióhibákat, az átviteli hibákat és a HTTP-státuszt.
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.