Reputation: 3023
I am trying to use HttpContent
:
HttpContent myContent = HttpContent.Create(SOME_JSON);
...but I am not having any luck finding the DLL where it is defined.
First, I tried adding references to Microsoft.Http
as well as System.Net
, but neither is in the list. I also tried adding a reference to System.Net.Http
but the HttpContent
class is not available.
So, can anyone tell me where I can find the HttpContent
class?
Upvotes: 261
Views: 356487
Reputation: 1959
For 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);
And if you need to get the response:
var stringContent = await response.Content.ReadAsStringAsync();
https://blog.pedrofelix.org/2012/01/16/the-new-system-net-http-classes-message-content/
Upvotes: 130
Reputation: 43
Just leaving the way using Microsoft.AspNet.WebApi.Client
here.
Example:
var client = HttpClientFactory.Create();
var result = await client.PostAsync<ExampleClass>("http://www.sample.com/write", new ExampleClass(), new JsonMediaTypeFormatter());
Upvotes: -3
Reputation: 25050
Just use...
var stringContent = new StringContent(jObject.ToString());
var response = await httpClient.PostAsync("http://www.sample.com/write", stringContent);
Or,
var stringContent = new StringContent(JsonConvert.SerializeObject(model), Encoding.UTF8, "application/json");
var response = await httpClient.PostAsync("http://www.sample.com/write", stringContent);
Upvotes: 475
Reputation: 3461
I'm pretty sure the code is not using the System.Net.Http.HttpContent class, but instead Microsoft.Http.HttpContent. Microsoft.Http was the WCF REST Starter Kit, which never made it out preview before being placed in the .NET Framework. You can still find it here: http://aspnet.codeplex.com/releases/view/24644
I would not recommend basing new code on it.
Upvotes: 0
Reputation: 65426
To take 6footunder's comment and turn it into an answer, HttpContent
is abstract so you need to use one of the derived classes:
Upvotes: 174
Reputation: 131189
While the final version of HttpContent and the entire System.Net.Http namespace will come with .NET 4.5, you can use a .NET 4 version by adding the Microsoft.Net.Http package from NuGet
Upvotes: 6