source

는 HttpContent입니다.Async로 읽으시겠습니까?

manycodes 2023. 6. 15. 21:57
반응형

는 HttpContent입니다.Async로 읽으시겠습니까?

나는 웹에서 새로운 것을 사용하는 수많은 예를 봅니다.HttpClient새로운 웹 API의 일부로서 존재해야 하는 객체HttpContent.ReadAsAsync<T>방법.그러나 MSDN은 이 방법을 언급하지 않으며 IntelliSense도 이 방법을 찾지 못합니다.

어디로 갔으며 어떻게 해결해야 합니까?

(시스템에서) 확장 방법인 것 같습니다.넷. http.서식 지정):

Http 컨텐츠확장 클래스

업데이트:

PM > 설치-패키지 Microsoft.AsNet.WebApi.고객

시스템에 따라.넷. http.NuGet 패키지 페이지 포맷,System.Net.Http.Formatting 패키는이대다찾서수을있다습니에음신에서 수 .Microsoft.AspNet.WebApi.Client패키지는 NuGet에서 사용할 수 있습니다.

저도 같은 문제가 있어서 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());

업데이트2021년판: 에서된 것 .에서 메소드가 제거된 것 같습니다.NET5를 할 수 . 또는 다음을 사용할 수 있습니다.ReadFromJsonAsync<>()System.Net.Http.Json.HttpContentJsonExtensions그것은 목적을 해결합니다.

확장 방법을 쓸 수 있습니다.

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

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

NuGet Microsoft를 설치한 후에도 사용할 수 없는 경우 이를 몇 번 누르고 여러 가지 제안을 따릅니다.AsNet.WebApi.클라이언트가 솔루션의 패키지 폴더에서 다음 위치에 참조를 수동으로 추가합니다.

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

그리고 시스템에 오래된 참조를 추가하는 함정에 빠지지 마십시오.넷. http.Formating.dll NuGet

저도 같은 문제가 있었지만, 이 스레드의 답변은 제가 문제를 해결하는 데 완전히 도움이 되지 않았습니다.이러한 이유로, 저는 제 연구 결과를 이 게시물에 쓰기로 결정했습니다.이 문제를 해결하려면 다음 단계를 수행합니다.

  1. Microsoft를 추가합니다.AsNet.WebApi.NuGet을 사용하여 프로젝트로 클라이언트 패키지.ASP.NET 솔루션 내부에서 다음으로 이동하여 패키지 관리자 콘솔을 엽니다.Tools > NuGet Package Manager > Package Manager Console에서 Visual Studio IDE를 합니다.Microsoft.AspNet.WebApi.Client해결책으로 포장합니다.
Install-Package Microsoft.AspNet.WebApi.Client -Version 5.2.7
  1. 설치 후 확장 DLL이 시스템에 있는지 확인합니다. System.Net.Http.Formatting.dll첫 번째 단계의 결과로 아래에 표시된 디렉토리에 파일이 있어야 합니다.
{root-solution-directory}\packages\Microsoft.AspNet.WebApi.Client.{package-version}\lib\net45\
  1. 관련 프로젝트에 참조를 수동으로 추가합니다.솔루션 내 ASP.NET 프로젝트의 "References" 섹션을 마우스 오른쪽 버튼으로 클릭하고 "Add References"를 클릭합니다.섹션파일 이후로System.Net.Http.Formatting.dll확장입니다. 다른 항목처럼 직접 검색할 때 나열되지 않습니다.Microsoft.AspNet.WebApi.Client꾸러미따라서 DLL 파일을 수동으로 추가하려면 "찾아보기"를 클릭합니다.버튼을 클릭합니다.다음을 선택합니다.System.Net.Http.Formatting.dllDLL 파일을 프로젝트에 포함하려면 두 번째 단계에 표시된 디렉토리에 파일을 저장하고 확인란을 선택합니다.

  2. 포함System.Net.Http프로젝트에서 이 DLL에서 제공하는 기능을 사용하기 위한 프로젝트 네임스페이스.using System.Net.Http.Formatting;선언은 내에서 사용할 수 있습니다.HttpContentExtensions정적 계급

using System.Net.Http;

선택 사항:시스템 중 하나를 설치하면 유사한 솔루션을 얻을 수 있습니다.넷. http.포맷.확장 또는 WebApiDoodle.넷. http.패키지를 포맷하고 위의 단계를 따릅니다.

언급URL : https://stackoverflow.com/questions/10399324/where-is-httpcontent-readasasync

반응형