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
Abra o DevTools
Pressione F12 ou Ctrl+Shift+I para abrir as ferramentas de desenvolvedor do seu navegador.
- 2
Vá para a aba Network
Clique na aba Network e realize a ação que dispara a requisição HTTP.
- 3
Copiar como cURL
Clique com o botão direito na requisição → Copy → Copy 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.