Convertir curl a C

curl2code convierte comandos curl a código C utilizando libcurl. La conversión se ejecuta en su navegador a través de WebAssembly para una privacidad total. Para Rust, consulte nuestro conversor de curl a Rust. Para Go, vea curl a Go. A continuación se presentan ejemplos prácticos de C con una gestión de memoria adecuada.

Cómo copiar curl desde su navegador

  1. 1

    Abrir DevTools

    Presione F12 o Ctrl+Shift+I para abrir las herramientas de desarrollo de su navegador.

  2. 2

    Vaya a la pestaña Network

    Haga clic en la pestaña Network y realice la acción que activa la solicitud HTTP.

  3. 3

    Copiar como cURL

    Haga clic derecho en la solicitud → CopyCopy as cURL. Luego péguelo arriba.

Preguntas frecuentes

¿Qué es libcurl?

libcurl es la biblioteca de C que está detrás de la herramienta de línea de comandos curl. Es la biblioteca de cliente HTTP más portátil y ampliamente desplegada que existe, soportando más de 25 protocolos. Es utilizada por miles de aplicaciones y sistemas embebidos. Añádela con el gestor de paquetes de tu sistema o enlázala estáticamente. curl2code genera código C de libcurl usando la interfaz "easy".

libcurl interfaz easy vs multi — ¿cuál usar?

La interfaz easy (curl_easy_*) es para transferencias síncronas individuales — simple y directa. La interfaz multi (curl_multi_*) permite transferencias concurrentes no bloqueantes en un solo hilo. Usa easy para scripts y herramientas simples, y multi para aplicaciones de alto rendimiento. Para un lenguaje de la familia C de nivel más alto, consulta curl a Rust.

¿Cómo manejar la autenticación con libcurl?

Para Bearer: establece un encabezado personalizado con curl_slist_append(headers, "Authorization: Bearer token"). Para autenticación Basic: curl_easy_setopt(curl, CURLOPT_USERPWD, "user:pass"). libcurl codifica automáticamente las credenciales de autenticación Basic. curl2code convierte los flags -u y de encabezado a las llamadas correctas de la API de C.

¿Cómo enviar datos de formulario multipart con libcurl?

Usa la API MIME (libcurl 7.56+): curl_mime_init() para crear una estructura mime, curl_mime_addpart() para cada campo, curl_mime_name() y curl_mime_filedata() para subidas de archivos. Establécelo con CURLOPT_MIMEPOST. Libera con curl_mime_free().

¿Cómo manejar errores con libcurl?

Cada función curl_easy_* devuelve un CURLcode — compruébalo contra CURLE_OK. Usa curl_easy_strerror(code) para mensajes legibles por humanos. Establece CURLOPT_ERRORBUFFER para cadenas de error detalladas. Obtén el estado HTTP con curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &code).

¿Cómo gestionar la memoria con libcurl?

Llama siempre a curl_easy_cleanup() cuando termines con un manejador. Libera las listas de encabezados con curl_slist_free_all(). Libera las estructuras MIME con curl_mime_free(). Para los callbacks de escritura, gestiona tu propia asignación de búfer. Llama a curl_global_cleanup() una vez al salir del programa. No liberar los recursos causa fugas de memoria.

¿Cómo establecer tiempos de espera con libcurl?

Establece CURLOPT_CONNECTTIMEOUT para el tiempo de espera de conexión y CURLOPT_TIMEOUT para el tiempo total de transferencia (ambos en segundos). Para precisión en milisegundos, usa CURLOPT_CONNECTTIMEOUT_MS y CURLOPT_TIMEOUT_MS. Estas son exactamente las mismas opciones que usa la CLI de curl con --connect-timeout y --max-time.

¿Cómo configurar un proxy con libcurl?

Establece CURLOPT_PROXY con la URL del proxy: curl_easy_setopt(curl, CURLOPT_PROXY, "http://proxy:8080"). Para SOCKS5: establece CURLOPT_PROXYTYPE a CURLPROXY_SOCKS5. Para autenticación de proxy: CURLOPT_PROXYUSERPWD. libcurl también respeta la variable de entorno http_proxy.

¿Cómo enviar una solicitud POST con un cuerpo JSON en C?

Convierte un comando curl POST como curl -X POST -H "Content-Type: application/json" -d "{"key":"value"}" URL a C usando curl2code. El código generado utiliza curl_easy_setopt(curl, CURLOPT_POSTFIELDS, json_string). curl2code detecta automáticamente los flags -d/--data con contenido JSON y establece el encabezado Content-Type adecuado en el código de libcurl.

¿Cómo añadir autorización con token Bearer en C?

Pasa curl -H "Authorization: Bearer YOUR_TOKEN" URL a curl2code y este generará código de libcurl con el encabezado de autorización: struct curl_slist *headers = curl_slist_append(NULL, "Authorization: Bearer TOKEN"). curl2code detecta tokens Bearer tanto en los flags -H "Authorization: Bearer ..." como en --oauth2-bearer. Para Basic auth, utiliza -u user:pass.

¿Cómo configurar el encabezado Content-Type en C?

curl2code convierte curl -H "Content-Type: application/json" URL a código de libcurl con el encabezado correcto: curl_slist_append(headers, "Content-Type: application/json"). Para los datos de -d, curl utiliza por defecto application/x-www-form-urlencoded; para subidas de formularios con -F, utiliza multipart/form-data. curl2code mapea cada uno a la API de libcurl correcta.

Enlaces útiles

Guías de curl

Convertir curl a otros lenguajes