libcurl asocia a configuración do proxy ao easy handle que realiza a transferencia. Estableza o enderezo do intermediario nese handle, deixando CURLOPT_URL como URL de destino.

O seguinte fragmento supón que libcurl xa está inicializado e que handle é un easy handle válido:

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));

Manteña vivo o búfer de erros mentres o handle faga referencia a el. Antes de saír do seu ámbito, limpe o handle ou substitúa ou borre o seu punteiro CURLOPT_ERRORBUFFER. O nome de host do proxy é un marcador de posición; un candidato non autenticado da lista de proxies HTTP pode fornecer o enderezo para esta proba nun sitio público. Use o seu esquema e porto reais, e comprobe se permite o túnel HTTPS.

Un destino HTTPS pode usar un proxy HTTP. libcurl xestiona o túnel para esa transferencia HTTPS. O http:// da opción de proxy describe a conexión co intermediario. Cámbieo a https:// só para un punto final de proxy que acepte realmente TLS e unha compilación de libcurl que o admita.

Faga que a ruta efectiva sexa deliberada

Unha opción de proxy explícita substitúe a configuración de ambiente de proxy correspondente. A omisión é unha decisión aparte: un no_proxy heredado aínda pode excluír o destino. Se este handle debe usar o proxy seleccionado para cada destino que recibe, configure CURLOPT_NOPROXY como unha cadea baleira dentro desa política.

Pola contra, establecer CURLOPT_PROXY nunha cadea baleira desactiva explicitamente o uso do proxy. Establecelo en NULL elimina a asignación explícita e volve permitir o comportamento baseado no ambiente. Eses dous valores serven a propósitos distintos.

Unha cabeceira específica do destino como Content-Type: text/xml non selecciona o proxy. Engádaa só cando o corpo real da solicitude e a API de destino necesiten ese tipo de medio.

Lea tamén o resultado HTTP

Un curl_easy_perform correcto non significa que o sitio web devolvese un estado HTTP correcto. Lea CURLINFO_RESPONSE_CODE e aplique o tratamento de estados da aplicación. A resposta CONNECT do proxy ten o seu propio valor, CURLINFO_HTTP_CONNECTCODE; un rexeitamento do túnel precede calquera resposta do sitio web.

CURLOPT_FAILONERROR pode tratar moitos erros HTTP como fallos, pero a súa documentación sinala excepcións de autenticación. Manteña o desafío 407 do proxy separado do estado do destino.

Artigos relacionados