HttpClient Classe

Définition

Fournit une classe pour envoyer des requêtes HTTP et recevoir des réponses HTTP d’une ressource identifiée par un URI.

public ref class HttpClient : System::Net::Http::HttpMessageInvoker
public class HttpClient : System.Net.Http.HttpMessageInvoker
type HttpClient = class
    inherit HttpMessageInvoker
Public Class HttpClient
Inherits HttpMessageInvoker
Héritage

Exemples

// HttpClient is intended to be instantiated once per application, rather than per-use. See Remarks.
static readonly HttpClient client = new HttpClient();

static async Task Main()
{
  // Call asynchronous network methods in a try/catch block to handle exceptions.
  try	
  {
     HttpResponseMessage response = await client.GetAsync("http://www.contoso.com/");
     response.EnsureSuccessStatusCode();
     string responseBody = await response.Content.ReadAsStringAsync();
     // Above three lines can be replaced with new helper method below
     // string responseBody = await client.GetStringAsync(uri);

     Console.WriteLine(responseBody);
  }
  catch(HttpRequestException e)
  {
     Console.WriteLine("\nException Caught!");	
     Console.WriteLine("Message :{0} ",e.Message);
  }
}
' HttpClient is intended to be instantiated once per application, rather than per-use. See Remarks.
Shared ReadOnly client As HttpClient = New HttpClient()

Private Shared Async Function Main() As Task
    ' Call asynchronous network methods in a try/catch block to handle exceptions.
    Try
        Dim response As HttpResponseMessage = Await client.GetAsync("http://www.contoso.com/")
        response.EnsureSuccessStatusCode()
        Dim responseBody As String = Await response.Content.ReadAsStringAsync()
        ' Above three lines can be replaced with new helper method below
        ' Dim responseBody As String = Await client.GetStringAsync(uri)

        Console.WriteLine(responseBody)
    Catch e As HttpRequestException
        Console.WriteLine(Environment.NewLine & "Exception Caught!")
        Console.WriteLine("Message :{0} ", e.Message)
    End Try
End Function

L’exemple de code précédent utilise un async Task Main() point d’entrée. Cette fonctionnalité nécessite C# 7,1 ou une version ultérieure.

Remarques

L' HttpClient instance de classe agit comme une session pour envoyer des requêtes http. Une HttpClient instance est une collection de paramètres appliquée à toutes les requêtes exécutées par cette instance. En outre, chaque HttpClient instance utilise son propre pool de connexions, isolant ses demandes des requêtes exécutées par d’autres HttpClient instances.

Les classes dérivées ne doivent pas se substituer aux méthodes virtuelles de la classe. Au lieu de cela, utilisez une surcharge de constructeur qui accepte HttpMessageHandler pour configurer tout traitement de pré-ou de dernière demande.

par défaut, sur .NET Framework et Mono, HttpWebRequest est utilisé pour envoyer des requêtes au serveur. Ce comportement peut être modifié en spécifiant un canal différent dans l’une des surcharges de constructeur en acceptant une HttpMessageHandler instance comme paramètre. Si des fonctionnalités telles que l’authentification ou la mise en cache sont requises, WebRequestHandler peuvent être utilisées pour configurer les paramètres et l’instance peut être passée au constructeur. Le gestionnaire retourné peut être passé à l’une des surcharges de constructeur qui prennent un HttpMessageHandler paramètre.

Si une application HttpClient qui utilise et des classes associées dans l' System.Net.Http espace de noms envisage de télécharger de grandes quantités de données (50 mégaoctets ou plus), l’application doit diffuser ces téléchargements et ne pas utiliser la mise en mémoire tampon par défaut. Si la mise en mémoire tampon par défaut est utilisée, l’utilisation de la mémoire du client est très importante, ce qui peut entraîner une réduction significative des performances.

Les propriétés de ne HttpClient doivent pas être modifiées pendant qu’il y a des demandes en attente, car elles ne sont pas thread-safe.

Les méthodes suivantes sont thread-safe :

  1. CancelPendingRequests

  2. DeleteAsync

  3. GetAsync

  4. GetByteArrayAsync

  5. GetStreamAsync

  6. GetStringAsync

  7. PostAsync

  8. PutAsync

  9. SendAsync

  10. PatchAsync

HttpClient est conçu pour être instancié une fois et réutilisé tout au long de la vie d’une application. L’instanciation d’une classe HttpClient pour chaque demande épuise le nombre de sockets disponibles sous des charges lourdes. Cela entraînera des erreurs SocketException. Voici un exemple qui utilise HttpClient correctement.

public class GoodController : ApiController
{
    private static readonly HttpClient HttpClient;

    static GoodController()
    {
        HttpClient = new HttpClient();
    }
}
  Public Class GoodController
    Inherits ApiController  

    Private Shared ReadOnly HttpClient As HttpClient  

    Shared Sub New()  
        HttpClient = New HttpClient()
    End Sub
End Class

HttpClientEst une API de haut niveau qui encapsule les fonctionnalités de niveau inférieur disponibles sur chaque plateforme où elle s’exécute.

Sur chaque plateforme, HttpClient tente d’utiliser le meilleur transport disponible :

Hôte/Runtime BackEnd
Windows/.NET Framework HttpWebRequest
Windows/Mono HttpWebRequest
Windows/UWP Windows native WinHttpHandler (compatibilité HTTP 2,0)
Windows/.NET Core 1.0-2.0 Windows native WinHttpHandler (compatibilité HTTP 2,0)
Android/Xamarin Sélectionné au moment de la génération. Peut utiliser HttpWebRequest ou être configuré pour utiliser le mode natif d’Android HttpURLConnection
iOS, tvOS, Watchos/Xamarin Sélectionné au moment de la génération. Peut utiliser HttpWebRequest ou être configuré pour utiliser les Apple NSUrlSession (compatibilité http 2,0)
macOS/Xamarin Sélectionné au moment de la génération. Peut utiliser HttpWebRequest ou être configuré pour utiliser les Apple NSUrlSession (compatibilité http 2,0)
macOS/mono HttpWebRequest
macOS/. NET Core 1.0-2.0 libcurltransport HTTP basé sur (compatibilité HTTP 2,0)
Linux/mono HttpWebRequest
Linux/.net Core 1.0-2.0 libcurltransport HTTP basé sur (compatibilité HTTP 2,0)
.NET Core 2,1 et versions ultérieures System.Net.Http.SocketsHttpHandler

Les utilisateurs peuvent également configurer un transport spécifique pour HttpClient en appelant le HttpClient constructeur qui prend un HttpMessageHandler .

HttpClient et .NET Core

À compter de .NET Core 2,1, la System.Net.Http.SocketsHttpHandler classe au lieu de HttpClientHandler fournit l’implémentation utilisée par les classes de mise en réseau http de niveau supérieur telles que HttpClient . L’utilisation de SocketsHttpHandler offre un certain nombre d’avantages :

  • Une amélioration significative des performances par rapport à l’implémentation précédente.
  • L’élimination des dépendances de plateforme, ce qui simplifie le déploiement et la maintenance. Par exemple, libcurl n’est plus une dépendance vis-à-vis de .net Core pour MacOS et .net Core pour Linux.
  • Comportement cohérent sur toutes les plateformes .NET.

si cette modification n’est pas souhaitable, sur Windows vous pouvez toujours l’utiliser WinHttpHandler en la référençant NuGet package et en la transmettant manuellement au HttpClient constructeur de .

Configurer le comportement à l’aide des options de configuration au moment de l’exécution

Certains aspects du HttpClient comportement de sont personnalisables par lebiais des options de configuration de l’exécution. Toutefois, le comportement de ces commutateurs diffère par l’intermédiaire des versions .NET. Par exemple, dans .NET Core 2,1-3,1, vous pouvez configurer si SocketsHttpHandler est utilisé par défaut, mais cette option n’est plus disponible à partir de .net 5,0.

Constructeurs

HttpClient()

Initialise une nouvelle instance de la classe HttpClient avec un HttpClientHandler qui est supprimé lorsque cette instance est supprimée.

HttpClient(HttpMessageHandler)

Initialise une nouvelle instance de la classe HttpClient avec le gestionnaire spécifié. Le gestionnaire est supprimé lorsque cette instance est supprimée.

HttpClient(HttpMessageHandler, Boolean)

Initialise une nouvelle instance de la classe HttpClient avec le gestionnaire fourni et spécifie si ce gestionnaire doit être supprimé quand cette instance est supprimée.

Propriétés

BaseAddress

Obtient ou définit l'adresse de base de l'URI de la ressource Internet utilisée pour envoyer des demandes.

DefaultProxy

Obtient ou définit le proxy HTTP global.

DefaultRequestHeaders

Obtient les en-têtes qui doivent être envoyés avec chaque demande.

DefaultRequestVersion

Obtient ou définit la version de HTTP par défaut utilisée pour les requêtes suivantes effectuées par cette instance de HttpClient.

DefaultVersionPolicy

Obtient ou définit la stratégie de version par défaut pour les requêtes créées implicitement dans les méthodes pratiques, par exemple GetAsync(String) et PostAsync(String, HttpContent).

MaxResponseContentBufferSize

Obtient ou définit le nombre maximal d'octets à mettre en mémoire tampon lors de la lecture du contenu de réponse.

Timeout

Obtient ou définit la période d'attente jusqu'à l'expiration de la demande.

Méthodes

CancelPendingRequests()

Annulez toutes les demandes en attente sur cette instance.

DeleteAsync(String)

Envoie une demande DELETE à l'URI spécifié sous forme d'opération asynchrone.

DeleteAsync(String, CancellationToken)

Envoie une requête DELETE à l'URI spécifié avec un jeton d'annulation sous forme d'opération asynchrone.

DeleteAsync(Uri)

Envoie une demande DELETE à l'URI spécifié sous forme d'opération asynchrone.

DeleteAsync(Uri, CancellationToken)

Envoie une requête DELETE à l'URI spécifié avec un jeton d'annulation sous forme d'opération asynchrone.

Dispose()

Libère les ressources non managées et supprime les ressources managées utilisées par le HttpMessageInvoker.

(Hérité de HttpMessageInvoker)
Dispose(Boolean)

Libère les ressources non managées utilisées par le HttpClient et supprime éventuellement les ressources managées.

Equals(Object)

Détermine si l'objet spécifié est égal à l'objet actuel.

(Hérité de Object)
GetAsync(String)

Envoie une requête GET vers l'URI spécifié sous forme d'opération asynchrone.

GetAsync(String, CancellationToken)

Envoie une requête GET à l'URI spécifié avec un jeton d'annulation sous forme d'opération asynchrone.

GetAsync(String, HttpCompletionOption)

Envoie une requête GET à l'URI spécifié avec une option d'achèvement HTTP sous forme d'opération asynchrone.

GetAsync(String, HttpCompletionOption, CancellationToken)

Envoie une requête GET à l'URI spécifié avec une option d'achèvement HTTP et un jeton d'annulation sous forme d'opération asynchrone.

GetAsync(Uri)

Envoie une requête GET vers l'URI spécifié sous forme d'opération asynchrone.

GetAsync(Uri, CancellationToken)

Envoie une requête GET à l'URI spécifié avec un jeton d'annulation sous forme d'opération asynchrone.

GetAsync(Uri, HttpCompletionOption)

Envoie une requête GET à l'URI spécifié avec une option d'achèvement HTTP sous forme d'opération asynchrone.

GetAsync(Uri, HttpCompletionOption, CancellationToken)

Envoie une requête GET à l'URI spécifié avec une option d'achèvement HTTP et un jeton d'annulation sous forme d'opération asynchrone.

GetByteArrayAsync(String)

Envoie une requête GET à l’URI spécifié et retourne le corps de la réponse sous forme de tableau d’octets dans une opération asynchrone.

GetByteArrayAsync(String, CancellationToken)

Envoie une requête GET à l’URI spécifié et retourne le corps de la réponse sous forme de tableau d’octets dans une opération asynchrone.

GetByteArrayAsync(Uri)

Envoie une requête GET à l'URI spécifié et retourne le corps de la réponse sous forme de tableau d'octets dans une opération asynchrone.

GetByteArrayAsync(Uri, CancellationToken)

Envoie une requête GET à l'URI spécifié et retourne le corps de la réponse sous forme de tableau d'octets dans une opération asynchrone.

GetHashCode()

Fait office de fonction de hachage par défaut.

(Hérité de Object)
GetStreamAsync(String)

Envoie une requête GET à l'URI spécifié et retourne le corps de la réponse sous forme de flux dans une opération asynchrone.

GetStreamAsync(String, CancellationToken)

Envoie une requête GET à l'URI spécifié et retourne le corps de la réponse sous forme de flux dans une opération asynchrone.

GetStreamAsync(Uri)

Envoie une requête GET à l'URI spécifié et retourne le corps de la réponse sous forme de flux dans une opération asynchrone.

GetStreamAsync(Uri, CancellationToken)

Envoie une requête GET à l'URI spécifié et retourne le corps de la réponse sous forme de flux dans une opération asynchrone.

GetStringAsync(String)

Envoie une requête GET à l'URI spécifié et retourne le corps de la réponse sous forme de chaîne dans une opération asynchrone.

GetStringAsync(String, CancellationToken)

Envoie une requête GET à l'URI spécifié et retourne le corps de la réponse sous forme de chaîne dans une opération asynchrone.

GetStringAsync(Uri)

Envoie une requête GET à l'URI spécifié et retourne le corps de la réponse sous forme de chaîne dans une opération asynchrone.

GetStringAsync(Uri, CancellationToken)

Envoie une requête GET à l'URI spécifié et retourne le corps de la réponse sous forme de chaîne dans une opération asynchrone.

GetType()

Obtient le Type de l'instance actuelle.

(Hérité de Object)
MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
PatchAsync(String, HttpContent)

Envoie une requête PATCH à un URI désigné comme chaîne en tant qu’opération asynchrone.

PatchAsync(String, HttpContent, CancellationToken)

Envoie une requête PATCH avec un jeton d’annulation à un URI représenté comme chaîne dans une opération asynchrone.

PatchAsync(Uri, HttpContent)

Envoie une requête PATCH en tant qu’opération asynchrone.

PatchAsync(Uri, HttpContent, CancellationToken)

Envoie une requête PATCH avec un jeton d'annulation sous forme d'opération asynchrone.

PostAsync(String, HttpContent)

Envoie une requête POST vers l'URI spécifié sous forme d'opération asynchrone.

PostAsync(String, HttpContent, CancellationToken)

Envoie une requête POST avec un jeton d'annulation sous forme d'opération asynchrone.

PostAsync(Uri, HttpContent)

Envoie une requête POST vers l'URI spécifié sous forme d'opération asynchrone.

PostAsync(Uri, HttpContent, CancellationToken)

Envoie une requête POST avec un jeton d'annulation sous forme d'opération asynchrone.

PutAsync(String, HttpContent)

Envoie une requête PUT vers l'URI spécifié sous forme d'opération asynchrone.

PutAsync(String, HttpContent, CancellationToken)

Envoyez une requête PUT avec un jeton d'annulation sous forme d'opération asynchrone.

PutAsync(Uri, HttpContent)

Envoie une requête PUT vers l'URI spécifié sous forme d'opération asynchrone.

PutAsync(Uri, HttpContent, CancellationToken)

Envoyez une requête PUT avec un jeton d'annulation sous forme d'opération asynchrone.

Send(HttpRequestMessage)

Envoie une requête HTTP avec la requête spécifiée.

Send(HttpRequestMessage, CancellationToken)

Envoie une requête HTTP avec la requête et le jeton d’annulation spécifiés.

Send(HttpRequestMessage, CancellationToken)

Envoie une requête HTTP avec la requête et le jeton d’annulation spécifiés.

(Hérité de HttpMessageInvoker)
Send(HttpRequestMessage, HttpCompletionOption)

Envoie une requête HTTP.

Send(HttpRequestMessage, HttpCompletionOption, CancellationToken)

Envoie une requête HTTP avec la requête, l’option d’achèvement et le jeton d’annulation spécifiés.

SendAsync(HttpRequestMessage)

Envoie une requête HTTP en tant qu'opération asynchrone.

SendAsync(HttpRequestMessage, CancellationToken)

Envoie une requête HTTP en tant qu'opération asynchrone.

SendAsync(HttpRequestMessage, HttpCompletionOption)

Envoie une requête HTTP en tant qu'opération asynchrone.

SendAsync(HttpRequestMessage, HttpCompletionOption, CancellationToken)

Envoie une requête HTTP en tant qu'opération asynchrone.

ToString()

Retourne une chaîne qui représente l'objet actuel.

(Hérité de Object)

Méthodes d’extension

GetFromJsonAsync(HttpClient, String, Type, JsonSerializerOptions, CancellationToken)

Envoie une requête GET à l'URI spécifié et retourne la valeur qui résulte de la désérialisation du corps de la réponse au format JSON dans une opération asynchrone.

GetFromJsonAsync(HttpClient, String, Type, JsonSerializerContext, CancellationToken)

Envoie une requête GET à l'URI spécifié et retourne la valeur qui résulte de la désérialisation du corps de la réponse au format JSON dans une opération asynchrone.

GetFromJsonAsync(HttpClient, String, Type, CancellationToken)

Envoie une requête GET à l'URI spécifié et retourne la valeur qui résulte de la désérialisation du corps de la réponse au format JSON dans une opération asynchrone.

GetFromJsonAsync(HttpClient, Uri, Type, JsonSerializerOptions, CancellationToken)

Envoie une requête GET à l'URI spécifié et retourne la valeur qui résulte de la désérialisation du corps de la réponse au format JSON dans une opération asynchrone.

GetFromJsonAsync(HttpClient, Uri, Type, JsonSerializerContext, CancellationToken)

Envoie une requête GET à l'URI spécifié et retourne la valeur qui résulte de la désérialisation du corps de la réponse au format JSON dans une opération asynchrone.

GetFromJsonAsync(HttpClient, Uri, Type, CancellationToken)

Envoie une requête GET à l'URI spécifié et retourne la valeur qui résulte de la désérialisation du corps de la réponse au format JSON dans une opération asynchrone.

GetFromJsonAsync<TValue>(HttpClient, String, JsonSerializerOptions, CancellationToken)

Envoie une requête GET à l'URI spécifié et retourne la valeur qui résulte de la désérialisation du corps de la réponse au format JSON dans une opération asynchrone.

GetFromJsonAsync<TValue>(HttpClient, String, JsonTypeInfo<TValue>, CancellationToken)

Envoie une requête GET à l'URI spécifié et retourne la valeur qui résulte de la désérialisation du corps de la réponse au format JSON dans une opération asynchrone.

GetFromJsonAsync<TValue>(HttpClient, String, CancellationToken)

Envoie une requête GET à l'URI spécifié et retourne la valeur qui résulte de la désérialisation du corps de la réponse au format JSON dans une opération asynchrone.

GetFromJsonAsync<TValue>(HttpClient, Uri, JsonSerializerOptions, CancellationToken)

Envoie une requête GET à l'URI spécifié et retourne la valeur qui résulte de la désérialisation du corps de la réponse au format JSON dans une opération asynchrone.

GetFromJsonAsync<TValue>(HttpClient, Uri, JsonTypeInfo<TValue>, CancellationToken)

Envoie une requête GET à l'URI spécifié et retourne la valeur qui résulte de la désérialisation du corps de la réponse au format JSON dans une opération asynchrone.

GetFromJsonAsync<TValue>(HttpClient, Uri, CancellationToken)

Envoie une requête GET à l'URI spécifié et retourne la valeur qui résulte de la désérialisation du corps de la réponse au format JSON dans une opération asynchrone.

PostAsJsonAsync<TValue>(HttpClient, String, TValue, JsonSerializerOptions, CancellationToken)

Envoie une requête POST à l’URI spécifié contenant la value sérialisée au format JSON dans le corps de la demande.

PostAsJsonAsync<TValue>(HttpClient, String, TValue, JsonTypeInfo<TValue>, CancellationToken)

Envoie une requête POST à l’URI spécifié contenant la value sérialisée au format JSON dans le corps de la demande.

PostAsJsonAsync<TValue>(HttpClient, String, TValue, CancellationToken)

Envoie une requête POST à l’URI spécifié contenant la value sérialisée au format JSON dans le corps de la demande.

PostAsJsonAsync<TValue>(HttpClient, Uri, TValue, JsonSerializerOptions, CancellationToken)

Envoie une requête POST à l’URI spécifié contenant la value sérialisée au format JSON dans le corps de la demande.

PostAsJsonAsync<TValue>(HttpClient, Uri, TValue, JsonTypeInfo<TValue>, CancellationToken)

Envoie une requête POST à l’URI spécifié contenant la value sérialisée au format JSON dans le corps de la demande.

PostAsJsonAsync<TValue>(HttpClient, Uri, TValue, CancellationToken)

Envoie une requête POST à l’URI spécifié contenant la value sérialisée au format JSON dans le corps de la demande.

PutAsJsonAsync<TValue>(HttpClient, String, TValue, JsonSerializerOptions, CancellationToken)

Envoie une requête PUT à l’URI spécifié contenant la value sérialisée au format JSON dans le corps de la demande.

PutAsJsonAsync<TValue>(HttpClient, String, TValue, JsonTypeInfo<TValue>, CancellationToken)

Envoie une requête PUT à l’URI spécifié contenant la value sérialisée au format JSON dans le corps de la demande.

PutAsJsonAsync<TValue>(HttpClient, String, TValue, CancellationToken)

Envoie une requête PUT à l’URI spécifié contenant la value sérialisée au format JSON dans le corps de la demande.

PutAsJsonAsync<TValue>(HttpClient, Uri, TValue, JsonSerializerOptions, CancellationToken)

Envoie une requête PUT à l’URI spécifié contenant la value sérialisée au format JSON dans le corps de la demande.

PutAsJsonAsync<TValue>(HttpClient, Uri, TValue, JsonTypeInfo<TValue>, CancellationToken)

Envoie une requête PUT à l’URI spécifié contenant la value sérialisée au format JSON dans le corps de la demande.

PutAsJsonAsync<TValue>(HttpClient, Uri, TValue, CancellationToken)

Envoie une requête PUT à l’URI spécifié contenant la value sérialisée au format JSON dans le corps de la demande.

S’applique à

Voir aussi