Converter curl para C
O curl2code converte comandos curl para código C utilizando libcurl. A conversão é executada no seu navegador através de WebAssembly para total privacidade. Para Rust, consulte o nosso conversor de curl para Rust. Para Go, veja curl para Go. Abaixo encontram-se exemplos práticos de C com gestão de memória adequada.
Como copiar o curl do seu navegador
- 1
Abrir as DevTools
Prima F12 ou Ctrl+Shift+I para abrir as ferramentas de programador do seu navegador.
- 2
Ir para o separador Network
Clique no separador Network e realize a ação que despoleta o pedido HTTP.
- 3
Copiar como cURL
Clique com o botão direito no pedido → Copy → Copy as cURL. Depois cole-o acima.
Perguntas Frequentes
O que é a libcurl?
libcurl é a biblioteca C por trás da ferramenta de linha de comandos curl. É a biblioteca de cliente HTTP mais portátil e amplamente implementada que existe, suportando mais de 25 protocolos. Utilizada por milhares de aplicações e sistemas embebidos. Adicione com o gestor de pacotes do seu sistema ou ligue estaticamente. O curl2code gera código C libcurl usando a interface easy.
libcurl easy vs multi interface — 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 numa única thread. Use a easy para scripts e ferramentas simples, e a multi para aplicações de alto desempenho. Para uma linguagem da família C de nível mais elevado, consulte curl para Rust.
Como gerir a 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 de autenticação Basic. O curl2code converte as flags -u e de cabeçalho para as chamadas corretas da API C.
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 ficheiros. Defina com CURLOPT_MIMEPOST. Liberte com curl_mime_free().
Como gerir erros com libcurl?
Cada função curl_easy_* devolve 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 estado HTTP com curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &code).
Como gerir a memória com libcurl?
Chame sempre curl_easy_cleanup() quando terminar com um handle. Liberte as listas de cabeçalhos com curl_slist_free_all(). Liberte as estruturas MIME com curl_mime_free(). Para callbacks de escrita, gira a sua própria alocação de buffer. Chame curl_global_cleanup() uma vez ao sair do programa. A falha na libertação de recursos causa fugas de memória.
Como definir timeouts com libcurl?
Defina CURLOPT_CONNECTTIMEOUT para o timeout de ligaçã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 o 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 um pedido POST com um 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 utiliza curl_easy_setopt(curl, CURLOPT_POSTFIELDS, json_string). O curl2code deteta automaticamente as flags -d/--data com conteúdo JSON e define o cabeçalho Content-Type apropriado no código libcurl.
Como adicionar autorização com token Bearer em C?
Passe curl -H "Authorization: Bearer YOUR_TOKEN" URL para o curl2code e este gera código libcurl com o cabeçalho de autenticação: struct curl_slist *headers = curl_slist_append(NULL, "Authorization: Bearer TOKEN"). O curl2code deteta tokens Bearer tanto de flags -H "Authorization: Bearer ..." como de --oauth2-bearer. Para Basic auth, utilize -u user:pass.
Como definir o cabeçalho Content-Type em C?
O curl2code converte curl -H "Content-Type: application/json" URL para código libcurl com o cabeçalho correto: curl_slist_append(headers, "Content-Type: application/json"). Para dados -d, o curl assume por defeito application/x-www-form-urlencoded; para envios de formulários -F, utiliza multipart/form-data. O curl2code mapeia cada um para a API libcurl correta.
Links Úteis
Guias do curl
Códigos de erro do curl
Consulte qualquer código de saída do curl — causas, correções e dicas de depuração.
Transferir ficheiros com curl
Guarde ficheiros com -o, -O, siga redirecionamentos, retome transferências e mais.
SSL, TLS e proxy
Configure certificados, versões TLS, proxies HTTP/SOCKS e DNS personalizado.