Не могу найти как использовать HttpContent

Я пытаюсь использовать HttpContent:

HttpContent myContent = HttpContent.Create(SOME_JSON);

... но мне не повезло найти DLL, где она определена.

Сначала я попытался добавить ссылки на Microsoft.Http так же как System.Net, но ни один не в списке. Я также попытался добавить ссылку на System.Net.Http но HttpContent класс не доступен.

Итак, кто-нибудь может сказать мне, где я могу найти HttpContent учебный класс?

7 ответов

Решение

Класс указан как присутствующий в System.Net.Http сборка. Обратите внимание, что этот класс является новым для.NET 4.5, поэтому вам необходимо использовать эту версию BCL.

Просто используйте...

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

Чтобы взять комментарий 6footunder и превратить его в ответ, HttpContent является абстрактным, поэтому вам нужно использовать один из производных классов:

введите описание изображения здесь

Для 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/

Хотя окончательная версия HttpContent и все пространство имен System.Net.Http будут поставляться с.NET 4.5, вы можете использовать версию.NET 4, добавив пакет Microsoft.Net.Http из NuGet.

Я почти уверен, что код использует не класс System.Net.Http.HttpContent, а вместо этого Microsoft.Http.HttpContent. Microsoft.Http был начальным набором WCF REST, который никогда не делал предварительный просмотр до помещения в.NET Framework. Вы все еще можете найти его здесь: http://aspnet.codeplex.com/releases/view/24644

Я не рекомендовал бы основывать новый код на этом.

System.Net.Http пространство имен (где HttpContent класс проживает) является новым для .Net 4.5, вы используете VS2012 RC?

В противном случае у вас не было бы доступа к этому.

Просто уходя с дороги, используя Microsoft.AspNet.WebApi.Client Вот.

Пример:

var client = HttpClientFactory.Create();
var result = await client.PostAsync<ExampleClass>("http://www.sample.com/write", new ExampleClass(), new JsonMediaTypeFormatter());
Другие вопросы по тегам