cURL to C#
Convierte un comando curl a C# HttpClient
Acerca de cURL to C#
Crea código C# asíncrono que envía un HttpRequestMessage mediante el HttpClient de System.Net.Http e imprime el cuerpo con Console.WriteLine. El encabezado Content-Type pasa a StringContent, los campos -F se convierten en FormUrlEncodedContent y los verbos no estándar usan new HttpMethod. El resultado son instrucciones de nivel superior para una app de consola .NET, generadas en tu navegador sin pasar por ningún servidor.
Categoría: API.
Preguntas frecuentes
¿El código C# generado es síncrono o asíncrono?
▾
Asíncrono. Envía un HttpRequestMessage con await client.SendAsync(request) y lee el cuerpo con await response.Content.ReadAsStringAsync(). Está escrito como instrucciones de nivel superior para una app de consola .NET 6+, cuyos usings implícitos predeterminados aportan Console y Dictionary; dentro de una clase, colócalo en un método async Task.
¿Por qué Content-Type no se agrega con request.Headers.Add?
▾
En .NET, Content-Type pertenece al contenido de la petición, así que cuando hay cuerpo su valor pasa a ser el tipo de medio de new StringContent(body, Encoding.UTF8, ...), o text/plain si el comando no define ninguno. Deja ese argumento como un tipo simple, por ejemplo application/json, porque StringContent rechaza ahí parámetros como charset.
¿En qué se convierten -F y -u en el código C#?
▾
Los campos -F se convierten en un FormUrlEncodedContent construido a partir de un Dictionary<string, string>, así que se envían codificados como URL y no como MultipartFormDataContent. -u usuario:clave se convierte en request.Headers.Add con un valor Authorization: Basic cuyo Base64 ya viene calculado.
¿Se traducen -k y -L, y conviene reutilizar HttpClient?
▾
Ninguna se traduce: HttpClient sigue las redirecciones por defecto, y omitir la verificación de certificados requeriría un HttpClientHandler con ServerCertificateCustomValidationCallback. El código crea un HttpClient para una sola llamada; en aplicaciones de larga duración, reutiliza una única instancia o usa IHttpClientFactory.