HttpContent.ReadAsAsync는 어디에 있습니까?


283

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

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

답변:


436

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

HttpContentExtensions 클래스

최신 정보:

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

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


최신 클라이언트 Nugets에서 더 이상 사용되지 않습니까? 지금은 찾을 수 없습니다 (사용할 수 있음).
— georgiosd

잘 될 수 있습니다. .NET4.5는 비동기 / 작업 (대기 등)과 관련하여 많은 새로운 기능을 추가했기 때문에 이러한 확장이 더 이상 필요하지 않을 수 있습니다. 예를 들면 다음과 같습니다. msdn.microsoft.com/en-us/library/…
— J ...

4
@georgiosd 방금 답변을 업데이트했습니다. 그 동안 nuget.org/packages/Microsoft.AspNet.WebApi.Client 패키지 System.Net.Http.Formatting로 이동 한 것처럼 보입니다 .
— Joseph Woodward

1
따라서 원래 질문의 방법 HttpContent.ReadAsAsync<T>이 Microsoft.AspNet.WebApi.Client에 있지 않다는 것이 사실 입니까? 권장되는 대체품은 무엇입니까?
— Patrick Szalapski

1
@JedatKinports 확실히 그렇지 않습니다. WebAPI.Client 패키지에는 .NET 4.5가 필요합니다. 나는 오래된 HttpContentExtensions가 .NET 4.0을위한 것이라고 생각한다
— J ...

68

나는 같은 문제가 있으므로 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);

8
이것이 질문에 대한 답변이 아니라는 점을 제외하고 왜 이것이 투표에 실패 했습니까? 합리적인 대안이 ReadAsAsync아닌가?
— Jess

7
그것은 확실하다! +1!
— Mr.

7
아마도 확장 방법은 어디로 갔는지에 대한 질문에 대답하지 않았기 때문일 것입니다. 당신은 자신 쓰는 것은 좋지 해결 방법입니다
— BritishDeveloper

13
반드시 나쁜 해결 방법은 아니며 현지화되어 향후 Nuget 업데이트 등에서 중단되지 않을 것입니다.
— 롤

3
응답에 JSON 컨텐츠 유형이 있다고 가정합니다.
— CodeCaster

30

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

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

9

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

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

결국 내가 한 일입니다. 전체 DLL을 2 줄 방법으로 드래그하지는 않습니다.
— Liz

5

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


3
누가 무엇에 대해 불평하고 있습니까?
— David Pfeffer

0

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

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

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.