[C#] HttpContent.ReadAsAsync는 어디에 있습니까?

메서드 HttpClient가 있어야한다는 새로운 객체 (새로운 웹 API의 일부)를 사용하여 웹에서 많은 예제를 볼 수 있습니다 HttpContent.ReadAsAsync<T>. 그러나 MSDN 은이 방법에 대해 언급하지 않았으며 IntelliSense도 찾지 못했습니다.

어디로 갔고 어떻게 해결합니까?



답변

확장 방법 인 것처럼 보입니다 (System.Net.Http.Formatting에서).

HttpContentExtensions 클래스

최신 정보:

PM> 설치 패키지 Microsoft.AspNet.WebApi.Client

System.Net.Http.Formatting NuGet 패키지 페이지 에 따르면 , System.Net.Http.Formatting패키지는 이제 레거시이며 대신 NuGet에서Microsoft.AspNet.WebApi.Client 사용 가능한 패키지 에서 찾을 수 있습니다 .


답변

나는 같은 문제가 있으므로 JSON 문자열을 가져 와서 클래스에 직렬화 해제합니다.

HttpResponseMessage response = await client.GetAsync("Products");
//get data as Json string 
string data = await response.Content.ReadAsStringAsync();
//use JavaScriptSerializer from System.Web.Script.Serialization
JavaScriptSerializer JSserializer = new JavaScriptSerializer();
//deserialize to your class
products = JSserializer.Deserialize<List<Product>>(data);


답변

이미 사용 Newtonsoft.Json중이고 설치하지 않으려 는 경우 Microsoft.AspNet.WebApi.Client:

 var myInstance = JsonConvert.DeserializeObject<MyClass>(
   await response.Content.ReadAsStringAsync());


답변

확장 방법을 작성할 수 있습니다.

public static async Task<Tout> ReadAsAsync<Tout>(this System.Net.Http.HttpContent content) {
    return Newtonsoft.Json.JsonConvert.DeserializeObject<Tout>(await content.ReadAsStringAsync());
}


답변

프로젝트에서 마우스 오른쪽 버튼을 클릭하면 NuGet 패키지 관리에서 Microsoft.AspNet.WebApi.Client 설치를 검색하고 확장 방법에 액세스 할 수 있습니다.


답변

NuGet Microsoft.AspNet.WebApi.Client를 설치 한 후 사용할 수없는 경우이 방법을 몇 번 누른 후 여러 가지 제안을 따랐다면 솔루션의 패키지 폴더에서 수동으로 참조를 추가하십시오.

\Microsoft.AspNet.WebApi.Client.5.2.6\lib\net45\System.Net.Http.Formatting.dll

그리고 System.Net.Http.Formatting.dll에 대한 이전 참조를 추가하는 함정에 빠지지 마십시오.


답변