Не могу найти как использовать 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());