Modifier les en-têtes de requête par requête C # HttpClient PCL

J’utilise actuellement System.Net.Http.HttpClient pour la prise en charge multiplateforme.

J’ai lu que ce n’est pas une bonne pratique d’instancier un object HttpClient pour chaque demande et que vous devriez le réutiliser autant que possible.

Maintenant, j’ai un problème lors de l’écriture d’une bibliothèque client pour un service. Certains appels d’API doivent avoir un en-tête spécifique, d’autres NE DOIVENT pas inclure cet en-tête spécifique.

Il semble que je ne puisse manipuler que les “DefaultRequestHeaders” qui seront envoyés à chaque demande.

Existe-t-il une option lors de la demande avec par exemple “client.PostAsync ()” pour modifier les en-têtes uniquement pour la demande spécifique?

(Info: les demandes peuvent être multi-threadées).

Merci d’avance!

Oui, vous pouvez créer un nouveau HttpRequestMessage, définir toutes les propriétés nécessaires et le transmettre à SendAsync.

var request = new HttpRequestMessage() { RequestUri = new Uri("http://example.org"), Method = HttpMethod.Post, Content = new SsortingngContent("Here is my content") } request.Headers.Accept.Add(...); // Set whatever headers you need to var response = await client.SendAsync(request); 

Utilisez HttpContent.Headers . Créez simplement une instance HttpContent avec les en-têtes requirejs et transmettez-la à la méthode PostAsync .