web-dev-qa-db-fra.com

Impossible de trouver comment utiliser HttpContent

J'essaie d'utiliser HttpContent:

HttpContent myContent = HttpContent.Create(SOME_JSON);

... mais je n'ai aucune chance de trouver le DLL où il est défini.

Tout d'abord, j'ai essayé d'ajouter des références à Microsoft.Http ainsi qu'à System.Net, mais aucune de celles-ci ne figure dans la liste. J'ai également essayé d'ajouter une référence à System.Net.Http mais la classe HttpContent n'est pas disponible.

Alors, quelqu'un peut-il me dire où je peux trouver la classe HttpContent?

157
user1416156

Il suffit d'utiliser ...

var stringContent = new StringContent(jObject.ToString());
var response = await httpClient.PostAsync("http://www.sample.com/write", stringContent);

Ou,

var stringContent = new StringContent(JsonConvert.SerializeObject(model), Encoding.UTF8, "application/json");
var response = await httpClient.PostAsync("http://www.sample.com/write", stringContent);
320
Youngjae

Pour prendre le commentaire de 6footunder et le transformer en réponse, HttpContent est abstrait, vous devez donc utiliser l'une des classes dérivées:

enter image description here

129
Chris S

Pour JSON Post:

var stringContent = new StringContent(json, Encoding.UTF8, "application/json");
var response = await httpClient.PostAsync("http://www.sample.com/write", stringContent);

Non-JSON:

var stringContent = new FormUrlEncodedContent(new[]
{
    new KeyValuePair<string, string>("field1", "value1"),
    new KeyValuePair<string, string>("field2", "value2"),
});
var response = await httpClient.PostAsync("http://www.sample.com/write", stringContent);

https://blog.pedrofelix.org/2012/01/16/the-new-system-net-http-classes-message-content/

50
Felipe Deveza

Alors que la version finale de HttpContent et l'ensemble de l'espace de noms System.Net.Http seront fournis avec .NET 4.5, vous pouvez utiliser une version .NET 4 en ajoutant le package Microsoft.Net.Http de NuGet.

6
Panagiotis Kanavos

Je suis à peu près sûr que le code n'utilise pas la classe System.Net.Http.HttpContent, mais plutôt Microsoft.Http.HttpContent. Microsoft.Http était le kit de démarrage WCF REST, qui n’avait jamais été aperçu avant d’être placé dans le .NET Framework. Vous pouvez toujours le trouver ici: http://aspnet.codeplex.com/releases/view/24644

Je ne recommanderais pas de baser le nouveau code dessus.

0
RasmusW

L'espace de nom System.Net.Http (où réside la classe HttpContent) est nouveau pour . Net 4.5, utilisez-vous un contrôleur VS2012?

Sinon, vous n'auriez pas accès à cela.

0
EkoostikMartin