postasync net library getasync example ejemplos ejemplo c# asp.net .net dll

c# - net - No se puede encontrar cómo usar HttpContent



httpcontent example c# (7)

El espacio de nombres System.Net.Http (donde reside la clase HttpContent ) es nuevo en .Net 4.5 , ¿está utilizando un VS2012 RC?

De lo contrario, no tendrías acceso a esto.

Estoy tratando de usar HttpContent :

HttpContent myContent = HttpContent.Create(SOME_JSON);

... pero no estoy teniendo suerte encontrando el DLL donde está definido.

Primero, traté de agregar referencias a Microsoft.Http así como a System.Net , pero ninguno está en la lista. También intenté agregar una referencia a System.Net.Http pero la clase HttpContent no está disponible.

Entonces, ¿alguien puede decirme dónde puedo encontrar la clase HttpContent ?


Estoy bastante seguro de que el código no está utilizando la clase System.Net.Http.HttpContent, sino que en su lugar Microsoft.Http.HttpContent. Microsoft.Http fue el WCF REST Starter Kit, que nunca llegó a la vista previa antes de colocarse en .NET Framework. Todavía puede encontrarlo aquí: http://aspnet.codeplex.com/releases/view/24644

No recomendaría basar código nuevo en él.


La clase se muestra como presente en el ensamblado System.Net.Http . Tenga en cuenta que esta clase es nueva para .NET 4.5, por lo que debe utilizar esa versión del BCL.


Para la publicación JSON:

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

No 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);

blog.pedrofelix.org/2012/01/16/…


Para tomar el comentario de 6footunder y convertirlo en una respuesta, HttpContent es abstracto, así que debes usar una de las clases derivadas:


Si bien la versión final de HttpContent y todo el espacio de nombres System.Net.Http incluirá .NET 4.5, puede usar una versión de .NET 4 al agregar el paquete Microsoft.Net.Http de NuGet


Solo usa...

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

O,

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