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.