cURL → C#
.NET API Code Generator

Guía de desarrollo del convertidor de cURL a C# (.NET HttpClient, RestSharp y Flurl)

Convierta comandos cURL en código C# idiomático para .NET HttpClient, RestSharp o Flurl.Http con patrones asíncronos y mejores prácticas de agrupación de conexiones.

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 y Protocolo
POSTHTTPS
Host de Destino y Ruta
https://api.openai.com
0 query params
Encabezados y Carga
2 headers • BEARER Auth
JSON Payload (260 B)

Transpilación 100% del lado del cliente

El análisis de comandos cURL y la generación de código C# se ejecutan completamente en la memoria de su navegador.

.NET 8/9 y Dialectos Modernos

Genera código para HttpClient moderno, RestSharp v107+, Flurl.Http y patrones IHttpClientFactory.

Paridad Completa de Parámetros y Autenticación

Maneja tokens Bearer, Basic Auth, encabezados personalizados, formularios multipart, tiempos de espera y SSL.

Referencia técnica y guía de arquitectura

Guía de desarrollo del convertidor de cURL a C# (.NET HttpClient, RestSharp y Flurl) — Guía de referencia

Convierta comandos cURL en código C# idiomático para .NET HttpClient, RestSharp o Flurl.Http con patrones asíncronos y mejores prácticas de agrupación de conexiones.

Parámetros clave y controles

targetLibrarystring

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

Por defecto: HttpClient
asyncPatternboolean

Genera firmas de métodos asíncronos modernas (async/await) con compatibilidad para CancellationToken.

Por defecto: true
jsonHandlingstring

Motor de serialización JSON utilizado para el payload de la solicitud y la respuesta (System.Text.Json frente a Newtonsoft.Json).

Por defecto: System.Text.Json
instantiationStylestring

Especifica si HttpClient se instancia directamente o se inyecta mediante IHttpClientFactory para evitar el agotamiento de sockets.

Por defecto: IHttpClientFactory

Consejos profesionales y mejores prácticas

Evite el agotamiento de sockets con IHttpClientFactory

Nunca envuelva HttpClient en una instrucción using dentro de bucles de alto tráfico. Cada desecho deja sockets TCP en estado TIME_WAIT, consumiendo puertos del sistema operativo. Registre clientes mediante IHttpClientFactory o reutilice una instancia singleton compartida.

Transmita datos directamente con System.Net.Http.Json

En lugar de generar cadenas JSON intermedias con JsonConvert.SerializeObject, utilice PostAsJsonAsync<T>() y ReadFromJsonAsync<T>(). Estos métodos transmiten flujos directamente a búferes de memoria, reduciendo la presión sobre el recolector de basura (GC).

Actualice registros DNS configurando SocketsHttpHandler

Al usar instancias singleton de HttpClient, configure SocketsHttpHandler.PooledConnectionLifetime en TimeSpan.FromMinutes(15). Esto renueva las conexiones periódicamente, garantizando que los cambios de DNS y failover se apliquen correctamente.

Capture excepciones de Flurl con FlurlHttpException

Al utilizar Flurl.Http, capture FlurlHttpException en lugar de HttpRequestException genérica. Esto proporciona acceso directo a ex.StatusCode y ex.GetResponseStringAsync() para un diagnóstico exhaustivo de errores.

Errores comunes y solución de problemas

HttpRequestException: The SSL connection could not be established

Ocurre al conectar con certificados autofirmados o protocolos TLS no compatibles (equivalente a curl -k). En entornos de desarrollo, configure DangerousAcceptAnyServerCertificateValidator en HttpClientHandler, pero mantenga la validación estricta en producción.

SocketException: Solo se permite normalmente un uso de cada dirección de socket

Producido por el agotamiento de sockets debido a múltiples instanciaciones de new HttpClient(). Refactorice para usar inyección de dependencias con IHttpClientFactory o una instancia singleton estática.

Error 415 Unsupported Media Type en solicitudes POST JSON

Compruebe que el contenido esté envuelto en un StringContent especificando Encoding.UTF8 y el tipo de medio application/json, o use PostAsJsonAsync que configura el encabezado Content-Type automáticamente.

Preguntas frecuentes (FAQ)

¿Cómo se traduce la autenticación básica de cURL (-u usuario:contraseña) a C# HttpClient?▼

Las credenciales se codifican en Base64 y se configuran en el encabezado de autorización mediante client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(Encoding.ASCII.GetBytes("usuario:contraseña")));.

¿Dónde se deben agregar los encabezados personalizados (-H) en .NET HttpClient?▼

Los encabezados globales se asignan en client.DefaultRequestHeaders y los específicos por solicitud en HttpRequestMessage.Headers.Add(). Sin embargo, los encabezados dependientes del cuerpo como Content-Type deben asignarse en HttpContent.Headers.

¿Cuáles son las diferencias entre HttpClient, RestSharp y Flurl.Http?▼

HttpClient es el estándar nativo de alto rendimiento en .NET. RestSharp ofrece una estructura intuitiva de solicitud/respuesta idónea para migraciones rápidas. Flurl.Http proporciona un constructor fluido de URLs encadenable, serialización transparente y herramientas para pruebas unitarias.

¿Cómo se convierte multipart/form-data (-F clave=valor -F archivo=@ruta) en C#?▼

Se mapea a MultipartFormDataContent. Los valores de texto se encapsulan en StringContent, mientras que los archivos se adjuntan con ByteArrayContent o StreamContent especificando el nombre de archivo y Content-Type.

¿Esta herramienta envía mis comandos cURL o claves de API a servidores externos?▼

No. Todo el análisis léxico, la generación del árbol sintáctico (AST) y la síntesis de código C# se realizan 100% en el navegador del cliente sin enviar información a ningún servidor.

Herramientas y utilidades relacionadas

Todas las herramientas →