Can't find how to use HttpContent
Solution 1
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);
Solution 2
To take 6footunder's comment and turn it into an answer, HttpContent
is abstract so you need to use one of the derived classes:
Solution 3
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);
https://blog.pedrofelix.org/2012/01/16/the-new-system-net-http-classes-message-content/
Solution 4
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
Related videos on Youtube
user1416156
Updated on July 23, 2020Comments
-
user1416156 almost 4 years
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 asSystem.Net
, but neither is in the list. I also tried adding a reference toSystem.Net.Http
but theHttpContent
class is not available.So, can anyone tell me where I can find the
HttpContent
class? -
micahhoover about 9 yearsSays the content parameter needs to be IHttpContent and not StringContent. When I cast it to the interface it's happy, though.
-
micahhoover about 9 yearsEnded up using HttpStringContent. I couldn't use the StringContent class because PostAsync (or PutAsync in my case) doesn't accept StringContent even if you cast it to a IHttpContent object.
-
Arin almost 7 yearsLooks like he used Visual Studio's "Class Diagram" feature (Right-click your project, Add Item, Class Diagram. Then you can go thru Solution Explorer and expand References to get diagrams of libraries you reference.) docs.microsoft.com/en-us/visualstudio/ide/…
-
Chris Koester over 6 yearsStringContent works for me with PostAsync, but if you want or need to use HttpContent, you can do so like this: HttpContent content = new StringContent(jsonString);
-
Slagmoth almost 5 yearsI keep seeing this answer to what appears to be a similar problem to mine, however as I debug through both of my APIs, I get a PostAsync("path", StringContent) to fire but when it hits the other API I don't have a body to parse and use and on return I get a 500... I am at a loss as it appears I am doing it just like this. Only difference is that I don't serialize the object as it is already serialized when I receive it in the first API and it is a simple passthrough.
-
DanielV over 4 yearsThis should be the answer :/
-
Joe almost 4 yearsI'm trying to use your "non-json" example, how should I read the data on the receiving end?
-
Felipe Deveza almost 4 yearsvar contents = await response.Content.ReadAsStringAsync();
-
Robin Gupta over 2 years@Chris, Please explain how you generated this class diagram for HttpContent...
-
Oak_3260548 over 2 years@DanielV No, that should not be an answer to question 'Can't find how to use HttpContent' without explaining anything.