cURL → C#
.NET API Code Generator

Guia do Desenvolvedor: Conversor de cURL para C# (.NET HttpClient, RestSharp e Flurl)

Converta comandos cURL em código C# idiomático para .NET HttpClient, RestSharp ou Flurl.Http com padrões assíncronos e melhores práticas de pool de conexões.

100% Client-Side Privacy
Zero Server Transmission
Presets:
Entrada de Comando cURL
using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Threading.Tasks;
using System.Text.Json;

using var client = new HttpClient();

using var request = new HttpRequestMessage(HttpMethod.Post, "https://api.openai.com/v1/chat/completions");

request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", "sk-proj-mockToken998877665544332211");

var jsonPayload = """
{
  "model": "gpt-4o",
  "messages": [
    {
      "role": "system",
      "content": "You are a professional C# and .NET full-stack architect."
    },
    {
      "role": "user",
      "content": "Demonstrate modern HttpClient and RestSharp best practices."
    }
  ],
  "temperature": 0.7,
  "max_tokens": 1000
}
""";
request.Content = new StringContent(jsonPayload, Encoding.UTF8, "application/json");

try
{
    using var response = await client.SendAsync(request);
    response.EnsureSuccessStatusCode();
    var responseBody = await response.Content.ReadAsStringAsync();
    Console.WriteLine(responseBody);
}
catch (HttpRequestException ex)
{
    Console.WriteLine($"[HTTP Request Failed] {ex.StatusCode}: {ex.Message}");
}
Método HTTP & Protocolo
POSTHTTPS
Host de Destino & Rota
https://api.openai.com
0 query params
Cabeçalhos & Carga
2 headers • BEARER Auth
JSON Payload (260 B)

Transpilação 100% no Navegador

Análise sintática do cURL e geração de código C# executadas diretamente na memória do seu navegador.

.NET 8/9 & Bibliotecas Populares

Suporta HttpClient moderno, RestSharp v107+, Flurl.Http fluente e injeção de dependência IHttpClientFactory.

Suporte Completo a Flags e Autenticação

Suporte a tokens Bearer, Basic Auth, cabeçalhos customizados, formulários multipart, timeouts e SSL.

Referência técnica e guia de arquitetura

Guia do Desenvolvedor: Conversor de cURL para C# (.NET HttpClient, RestSharp e Flurl) — Guia de referência

Converta comandos cURL em código C# idiomático para .NET HttpClient, RestSharp ou Flurl.Http com padrões assíncronos e melhores práticas de pool de conexões.

Parâmetros principais e controles

targetLibrarystring

Biblioteca de cliente HTTP em C# de destino: .NET HttpClient moderno, RestSharp ou Flurl.Http.

Padrão: HttpClient
asyncPatternboolean

Gera assinaturas de métodos modernas com async/await e suporte a CancellationToken.

Padrão: true
jsonHandlingstring

Mecanismo de serialização JSON para o corpo da requisição e resposta (System.Text.Json vs. Newtonsoft.Json).

Padrão: System.Text.Json
instantiationStylestring

Determina se o HttpClient é instanciado diretamente ou injetado via IHttpClientFactory para prevenir o esgotamento de sockets.

Padrão: IHttpClientFactory

Dicas profissionais e melhores práticas

Evite o esgotamento de sockets com IHttpClientFactory

Nunca envolva HttpClient em blocos using dentro de loops frequentes. Cada descarte mantém sockets TCP em estado TIME_WAIT, esgotando as portas do sistema operacional. Registre os clientes via IHttpClientFactory ou reutilize uma instância singleton.

Faça streaming direto com System.Net.Http.Json

Em vez de criar strings intermediárias com JsonConvert.SerializeObject, utilize PostAsJsonAsync<T>() e ReadFromJsonAsync<T>(). Esses métodos realizam streaming direto na memória, reduzindo a sobrecarga do Garbage Collector.

Respeite atualizações de DNS configurando SocketsHttpHandler

Ao utilizar instâncias singleton de HttpClient, defina SocketsHttpHandler.PooledConnectionLifetime como TimeSpan.FromMinutes(15). Isso recria conexões periodicamente, garantindo a atualização de registros DNS e nós de balanceamento.

Capture erros do Flurl com FlurlHttpException

Ao utilizar Flurl.Http, capture FlurlHttpException em vez da exceção genérica HttpRequestException. Isso permite acesso imediato a ex.StatusCode e ex.GetResponseStringAsync() para diagnósticos precisos.

Problemas comuns e solução de problemas

HttpRequestException: The SSL connection could not be established

Ocorre ao conectar a certificados autoassinados ou cifras TLS incompatíveis (equivalente ao curl -k). Em ambientes de desenvolvimento, configure DangerousAcceptAnyServerCertificateValidator no HttpClientHandler, mantendo a validação estrita em produção.

SocketException: Normalmente é permitido apenas um uso de cada endereço de soquete

Causado pelo esgotamento de portas resultante de repetidas instanciações de new HttpClient(). Refatore para injeção de dependência com IHttpClientFactory ou use uma instância estática singleton.

Erro 415 Unsupported Media Type em requisições POST JSON

Certifique-se de que os dados foram encapsulados em um StringContent com Encoding.UTF8 e tipo application/json, ou utilize o método PostAsJsonAsync que configura o cabeçalho automaticamente.

Perguntas frequentes (FAQ)

Como a autenticação básica do cURL (-u usuario:senha) é traduzida no C# HttpClient?▼

As credenciais são codificadas em Base64 e atribuídas ao cabeçalho de autorização: client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(Encoding.ASCII.GetBytes("usuario:senha")));.

Onde os cabeçalhos personalizados (-H) devem ser adicionados no .NET HttpClient?▼

Cabeçalhos globais são adicionados em client.DefaultRequestHeaders e cabeçalhos por requisição em HttpRequestMessage.Headers.Add(). No entanto, cabeçalhos de conteúdo como Content-Type devem ser configurados em HttpContent.Headers.

Qual a diferença entre HttpClient, RestSharp e Flurl.Http?▼

O HttpClient é o padrão nativo e altamente otimizado do .NET. O RestSharp oferece uma abordagem direta de requisição/resposta ideal para integrações rápidas. O Flurl.Http fornece uma API fluida e encadeada para construção de URLs com serialização e simulação de testes integradas.

Como o cURL multipart form-data (-F chave=valor -F arquivo=@caminho) é convertido em C#?▼

É mapeado para MultipartFormDataContent. Campos de texto usam StringContent, enquanto uploads de arquivos utilizam ByteArrayContent ou StreamContent com nome de arquivo e Content-Type configurados.

Esta ferramenta envia minhas requisições cURL ou credenciais para servidores externos?▼

Não. Todo o processamento léxico, geração da árvore sintática e síntese de código C# são executados 100% no navegador do cliente, sem envio de dados a nenhum servidor.

Ferramentas e utilitários relacionados

Todas as ferramentas →