Converter curl para C

O curl2code converte comandos curl para código C usando libcurl. A conversão é executada no seu navegador via WebAssembly para total privacidade. Para Rust, confira nosso conversor de curl para Rust. Para Go, veja curl para Go. Abaixo estão exemplos práticos de C com gerenciamento de memória adequado.

Como copiar o curl do seu navegador

  1. 1

    Abra o DevTools

    Pressione F12 ou Ctrl+Shift+I para abrir as ferramentas de desenvolvedor do seu navegador.

  2. 2

    Vá para a aba Network

    Clique na aba Network e realize a ação que dispara a requisição HTTP.

  3. 3

    Copiar como cURL

    Clique com o botão direito na requisição → CopyCopy as cURL. Depois cole acima.

Perguntas Frequentes

O que é a libcurl?

libcurl é a biblioteca C por trás da ferramenta de linha de comando curl. É a biblioteca de cliente HTTP mais portátil e amplamente implantada que existe, suportando mais de 25 protocolos. Usada por milhares de aplicações e sistemas embarcados. Adicione com o gerenciador de pacotes do seu sistema ou vincule estaticamente. O curl2code gera código C libcurl usando a interface easy.

libcurl interface easy vs multi — qual usar?

A interface easy (curl_easy_*) é para transferências síncronas únicas — simples e direta. A interface multi (curl_multi_*) permite transferências concorrentes não bloqueantes em uma única thread. Use easy para scripts e ferramentas simples, multi para aplicações de alto desempenho. Para uma linguagem da família C de nível mais alto, veja curl para Rust.

Como lidar com autenticação com libcurl?

Para Bearer: defina um cabeçalho personalizado com curl_slist_append(headers, "Authorization: Bearer token"). Para autenticação Basic: curl_easy_setopt(curl, CURLOPT_USERPWD, "user:pass"). A libcurl codifica automaticamente as credenciais Basic. O curl2code converte as flags -u e de cabeçalho para as chamadas de API C corretas.

Como enviar dados de formulário multipart com libcurl?

Use a API MIME (libcurl 7.56+): curl_mime_init() para criar uma estrutura mime, curl_mime_addpart() para cada campo, curl_mime_name() e curl_mime_filedata() para uploads de arquivos. Defina com CURLOPT_MIMEPOST. Libere com curl_mime_free().

Como lidar com erros com libcurl?

Cada função curl_easy_* retorna um CURLcode — verifique contra CURLE_OK. Use curl_easy_strerror(code) para mensagens legíveis por humanos. Defina CURLOPT_ERRORBUFFER para strings de erro detalhadas. Obtenha o status HTTP com curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &code).

Como gerenciar memória com libcurl?

Sempre chame curl_easy_cleanup() ao terminar com um handle. Libere listas de cabeçalhos com curl_slist_free_all(). Libere estruturas MIME com curl_mime_free(). Para callbacks de escrita, gerencie sua própria alocação de buffer. Chame curl_global_cleanup() uma vez na saída do programa. Falhar ao liberar recursos causa vazamentos de memória.

Como definir timeouts com libcurl?

Defina CURLOPT_CONNECTTIMEOUT para timeout de conexão e CURLOPT_TIMEOUT para o tempo total de transferência (ambos em segundos). Para precisão em milissegundos, use CURLOPT_CONNECTTIMEOUT_MS e CURLOPT_TIMEOUT_MS. Estas são as mesmas opções que o CLI do curl usa com --connect-timeout e --max-time.

Como configurar um proxy com libcurl?

Defina CURLOPT_PROXY para a URL do proxy: curl_easy_setopt(curl, CURLOPT_PROXY, "http://proxy:8080"). Para SOCKS5: defina CURLOPT_PROXYTYPE como CURLPROXY_SOCKS5. Para autenticação de proxy: CURLOPT_PROXYUSERPWD. A libcurl também respeita a variável de ambiente http_proxy.

Como enviar uma requisição POST com corpo JSON em C?

Converta um comando curl POST como curl -X POST -H "Content-Type: application/json" -d "{"key":"value"}" URL para C usando o curl2code. O código gerado usa curl_easy_setopt(curl, CURLOPT_POSTFIELDS, json_string). O curl2code detecta automaticamente as flags -d/--data com conteúdo JSON e define o cabeçalho Content-Type apropriado no código da libcurl.

Como adicionar autorização com token Bearer em C?

Passe curl -H "Authorization: Bearer YOUR_TOKEN" URL para o curl2code e ele gerará o código da libcurl com o cabeçalho de autenticação: struct curl_slist *headers = curl_slist_append(NULL, "Authorization: Bearer TOKEN"). O curl2code detecta tokens Bearer tanto de flags -H "Authorization: Bearer ..." quanto de --oauth2-bearer. Para Basic auth, use -u user:pass.

Como definir o cabeçalho Content-Type em C?

O curl2code converte curl -H "Content-Type: application/json" URL para o código da libcurl com o cabeçalho correto: curl_slist_append(headers, "Content-Type: application/json"). Para dados -d, o curl define por padrão application/x-www-form-urlencoded; para uploads de formulário com -F, ele usa multipart/form-data. O curl2code mapeia cada um para a API correta da libcurl.

Links úteis

Guias do curl

Converter curl para outras linguagens