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