cURL → C#
.NET API Code Generator

Guide de développement : Convertisseur cURL vers C# (.NET HttpClient, RestSharp et Flurl)

Convertissez vos requêtes cURL en code C# idiomatique pour .NET HttpClient, RestSharp ou Flurl.Http avec les meilleures pratiques de programmation asynchrone et de pool de connexions.

100% Client-Side Privacy
Zero Server Transmission
Presets:
Commande cURL en entrée
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éthode HTTP et Protocole
POSTHTTPS
Hôte Cible et Route
https://api.openai.com
0 query params
En-têtes et Données
2 headers • BEARER Auth
JSON Payload (260 B)

Transpilation 100% Côté Client

L'analyse syntaxique cURL et la génération de code C# s'exécutent entièrement dans votre navigateur.

.NET 8/9 et Dialectes Multi-Bibliothèques

Générez du code HttpClient moderne, RestSharp v107+, Flurl.Http et des modèles IHttpClientFactory.

Parité Complète des Drapeaux et Authentification

Gère les jetons Bearer, Basic Auth, en-têtes personnalisés, multipart/form-data, délais d'attente et SSL.

Référence technique et guide d'architecture

Guide de développement : Convertisseur cURL vers C# (.NET HttpClient, RestSharp et Flurl) — Guide de référence

Convertissez vos requêtes cURL en code C# idiomatique pour .NET HttpClient, RestSharp ou Flurl.Http avec les meilleures pratiques de programmation asynchrone et de pool de connexions.

Paramètres clés et contrôles

targetLibrarystring

Bibliothèque cliente HTTP C# cible : .NET HttpClient moderne, RestSharp ou Flurl.Http.

Par défaut : HttpClient
asyncPatternboolean

Génère des signatures de méthodes asynchrones modernes avec prise en charge de CancellationToken.

Par défaut : true
jsonHandlingstring

Moteur de sérialisation JSON pour le corps de la requête et la réponse (System.Text.Json vs Newtonsoft.Json).

Par défaut : System.Text.Json
instantiationStylestring

Spécifie si HttpClient est instancié directement ou injecté via IHttpClientFactory pour prévenir l'épuisement des sockets.

Par défaut : IHttpClientFactory

Conseils de pro et bonnes practices

Évitez l'épuisement des sockets avec IHttpClientFactory

N'encadrez jamais HttpClient dans un bloc using au sein de boucles fréquentes. Chaque libération laisse les sockets TCP en état TIME_WAIT, épuisant les ports du système. Enregistrez les clients via IHttpClientFactory ou réutilisez une instance singleton partagée.

Diffusez directement les flux avec System.Net.Http.Json

Au lieu d'allouer des chaînes JSON temporaires avec JsonConvert.SerializeObject, utilisez PostAsJsonAsync<T>() et ReadFromJsonAsync<T>(). Ces méthodes diffusent les données directement en mémoire, réduisant la charge sur le ramasse-miettes (GC).

Gérez les changements DNS grâce à SocketsHttpHandler

Lors de l'utilisation d'instances singleton de HttpClient, définissez SocketsHttpHandler.PooledConnectionLifetime sur TimeSpan.FromMinutes(15). Cela permet de renouveler périodiquement les connexions et de prendre en compte les mises à jour DNS.

Interceptez les erreurs Flurl avec FlurlHttpException

Avec Flurl.Http, interceptez FlurlHttpException plutôt qu'une HttpRequestException générique. Cela permet d'accéder directement à ex.StatusCode et ex.GetResponseStringAsync() pour un diagnostic précis.

Pièges courants et dépannage

HttpRequestException: The SSL connection could not be established

Cette erreur survient lors de la connexion à des certificats auto-signés ou des suites cryptographiques TLS non supportées (équivalent à curl -k). En développement, configurez DangerousAcceptAnyServerCertificateValidator sur HttpClientHandler, mais conservez une validation stricte en production.

SocketException: Une seule utilisation de chaque adresse de socket est habituellement autorisée

Causé par l'épuisement des sockets suite à des instanciations répétées de new HttpClient(). Migrez vers l'injection de dépendances avec IHttpClientFactory ou une instance statique singleton.

Erreur 415 Unsupported Media Type sur les requêtes POST JSON

Vérifiez que votre contenu est encapsulé dans un StringContent spécifiant Encoding.UTF8 et le type de média application/json, ou utilisez PostAsJsonAsync qui définit automatiquement l'en-tête Content-Type.

Foire aux questions (FAQ)

Comment l'authentification cURL Basic Auth (-u utilisateur:motdepasse) est-elle traduite dans C# HttpClient ?▼

Les identifiants sont encodés en Base64 et ajoutés à l'en-tête Authorization : client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(Encoding.ASCII.GetBytes("utilisateur:motdepasse")));.

Où les en-têtes personnalisés (-H) doivent-ils être ajoutés dans .NET HttpClient ?▼

Les en-têtes globaux sont définis dans client.DefaultRequestHeaders et ceux spécifiques à la requête via HttpRequestMessage.Headers.Add(). En revanche, les en-têtes liés au contenu comme Content-Type doivent être rattachés à HttpContent.Headers.

Quelle est la différence entre HttpClient, RestSharp et Flurl.Http ?▼

HttpClient est le standard natif hautement optimisé de .NET. RestSharp offre une approche intuitive par requête/réponse idéale pour les migrations rapides. Flurl.Http fournit un constructeur d'URL fluide et chaînable avec sérialisation automatique et simulation de tests.

Comment le format cURL multipart form-data (-F clé=valeur -F fichier=@chemin) est-il traduit en C# ?▼

Il est converti en MultipartFormDataContent. Les champs texte utilisent StringContent, tandis que les fichiers sont envoyés avec ByteArrayContent ou StreamContent en spécifiant le nom de fichier et le Content-Type.

Cet outil transmet-il mes commandes cURL ou clés d'API vers un serveur externe ?▼

Non. L'analyse syntaxique, la transformation de l'AST et la génération du code C# s'exécutent intégralement dans le navigateur de votre machine locale, sans aucun envoi vers un serveur externe.

Outils et utilitaires connexes

Tous les outils →