1101 votes

Comment définissez-vous l’en-tête Content-Type pour une demande de HttpClient ?

Je suis en train de définir l’en-tête Content-Type d’un objet HttpClient tel qu’exigé par une API, je vous appelle.

J’ai essayé de régler le Type de contenu comme ci-dessous :

Cela me permet d’ajouter l’en-tête Accept, mais lorsque j’essaie d’ajouter le Type de contenu il lève l’exception suivante :

Comment puis-je définir l’en-tête Content-Type dans une demande de HttpClient ?

1356voto

carlosfigueira Points 40778

Le type de contenu est un en-tête du contenu, et non de la demande, c’est pourquoi c’est un échec. ``comme le suggère Robert Levy pouvez travail, mais vous pouvez également utiliser ensemble le contenu de type lorsque vous créez le contenu de la requête proprement dit :

228voto

archgl Points 319

Pour ceux qui n’a pas vu Johns comment à solution de carlos...

62voto

Todd Menier Points 3599

Si vous n'avez pas l'esprit d'une petite bibliothèque de dépendance, Flurl.Http [divulgation: je suis l'auteur] rend super-simple. Ses PostJsonAsync méthode prend soin à la fois de la sérialisation du contenu et de définir l' content-type - tête, et ReceiveJson désérialise la réponse. Si l' accept - tête est nécessaire vous devrez régler vous-même, mais Flurl fournit un assez propre façon de le faire aussi:

using Flurl.Http;

var result = await "http://example.com/"
    .WithHeader("Accept", "application/json")
    .PostJsonAsync(new { ... })
    .ReceiveJson<TResult>();

Flurl utilise HttpClient et Json.NET sous le capot, et c'est un PCL sera donc de travailler sur une variété de plates-formes.

PM> Install-Package Flurl.Http

21voto

Robert Levy Points 18154

Appelez au lieu de (voir ce lien MSDN).

Sinon, je devine que l’API que vous utilisez vraiment cela nécessite seulement pour les requêtes POST ou PUT (non ordinaires requêtes GET). Dans ce cas, lorsque vous appelez et passer dans un , sous la propriété dudit objet.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X