找不到如何使用HttpContent

时间:2012-06-21 19:06:24

标签: c# asp.net .net dll

我正在尝试使用HttpContent

HttpContent myContent = HttpContent.Create(SOME_JSON);

...但我没有找到定义它的DLL的运气。

首先,我尝试添加对Microsoft.Http以及System.Net的引用,但两者都不在列表中。我还尝试添加对System.Net.Http的引用,但HttpContent类不可用。

那么,有谁能告诉我在哪里可以找到HttpContent课程?

8 个答案:

答案 0 :(得分:304)

只需使用......

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

或者,

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

答案 1 :(得分:121)

要获取6footunder的评论并将其转换为答案,HttpContent是抽象的,因此您需要使用其中一个派生类:

enter image description here

答案 2 :(得分:41)

对于JSON Post:

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

非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/

答案 3 :(得分:6)

虽然HttpContent的最终版本和整个System.Net.Http命名空间将随.NET 4.5一起提供,但您可以通过添加NuGet的Microsoft.Net.Http包来使用.NET 4版本

答案 4 :(得分:0)

System.Net.Http命名空间(HttpContent类所在的位置)是 .Net 4.5 的新用户,您使用的是VS2012 RC吗?

否则,您将无法访问此内容。

答案 5 :(得分:0)

我非常确定代码不使用System.Net.Http.HttpContent类,而是使用Microsoft.Http.HttpContent。 Microsoft.Http是WCF REST入门工具包,在放入.NET Framework之前从未进行过预览。 您仍然可以在此处找到它:http://aspnet.codeplex.com/releases/view/24644

我不建议在其上添加新代码。

答案 6 :(得分:-1)

只需在此处使用Microsoft.AspNet.WebApi.Client即可。

示例:

var client = HttpClientFactory.Create();
var result = await client.PostAsync<ExampleClass>("http://www.sample.com/write", new ExampleClass(), new JsonMediaTypeFormatter());

答案 7 :(得分:-2)

System.Net.Http程序集中的类is listed as being present。请注意,此类是.NET 4.5的新增功能,因此您需要使用该版本的BCL。