libcurl придружује конфигурацију проксија easy handle-у који обавља пренос. Поставите адресу посредника на тај handle, остављајући CURLOPT_URL као URL одредишта.

Следећи уломак претпоставља да је libcurl иницијализован и да је handle важећи 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));

Држите бафер грешака живим док се handle на њега позива. Пре напуштања његовог опсега очистите handle или замените, односно обришите његов показивач CURLOPT_ERRORBUFFER. Назив хоста проксија је резервисано место; неаутентификовани кандидат са листе HTTP проксија може обезбедити адресу за овај тест јавне странице. Користите његову стварну шему и порт и проверите да ли дозвољава тунел HTTPS.

Одредиште HTTPS може користити HTTP прокси. libcurl управља тунелом за тај HTTPS пренос. http:// у опцији проксија описује везу са посредником. Промените га у https:// само за крајњу тачку проксија која стварно прихвата TLS и libcurl build који то подржава.

Учините ефективну руту намерном

Експлицитна опција проксија надјачава одговарајућу поставку прокси окружења. Заобилажење је посебна одлука: наслеђени no_proxy још увек може искључити одредиште. Ако овај handle мора да користи изабрани прокси за свако одредиште које добије, конфигуришите CURLOPT_NOPROXY као празан низ у склопу те политике.

Насупрот томе, постављање CURLOPT_PROXY на празан низ изричито онемогућава употребу проксија. Постављање на NULL уклања експлицитну доделу и поново дозвољава понашање засновано на окружењу. Те две вредности служе различитим сврхама.

Заглавље специфично за циљ, попут Content-Type: text/xml, не бира прокси. Додајте га само када стварно тело захтева и API одредишта захтевају ту врсту медија.

Прочитајте и HTTP резултат

Успешан curl_easy_perform не значи да је веб страница вратила успешан HTTP статус. Прочитајте CURLINFO_RESPONSE_CODE и примените руковање статусом апликације. Одговор CONNECT проксија има сопствену вредност, CURLINFO_HTTP_CONNECTCODE; одбијање тунела претходи сваком одговору веб странице.

CURLOPT_FAILONERROR може многе HTTP грешке третирати као неуспехе, али његова документација истиче изузетке аутентификације. Држите изазов 407 проксија одвојеним од статуса одредишта.

Повезани чланци