2016-10-13 2 views
12

저는 ASP.NET 코어에서 PostAsJsonAsync 확장 메소드를 찾고있었습니다. 기사 here에 근거하여 Microsoft.AspNet.WebApi.Client 어셈블리에서 사용할 수 있습니다. 그러나 나는 Microsoft가 모든 어셈블리 이름을 Microsoft.AspNet에서 Microsoft.AspNetCore으로 변경했지만 .Net Core framework과 더욱 관련이 있습니다. 하지만 찾을 수 없습니다 Microsoft.AspNetCore.WebApi.ClientASP.NET 코어에서 PostAsJsonAsync 메서드는 어디에 있습니까?

ASP.NET 코어에서 PostAsJsonAsync 확장 방법은 어디입니까?

+0

그것은 따라서'Microsoft.AspNetCore. *'명명 스키마를 다음과하지의 ASP.NET 핵심 프로젝트의 일부가 아니다. 원래 Windows 8/81/10/UWP/WinRT 응용 프로그램의 확장 프로그램입니다.이 프로그램은 System.Runtime과 .NET Core를 기반으로하므로 – Tseng

+0

을 기반으로하므로 .Net Core에서 확장을 사용할 수 없습니다. 상자? – LP13

+4

이 패키지를 프로젝트에 추가하지 않으면 해당 패키지를 사용할 수 없습니다. 그것은'HttpClient' 확장입니다. ASP.NET 또는 ASP.NET 코어와 완전히 관련이 없습니다. 여기 https://www.nuget.org/packages/Microsoft.AspNet.WebApi.Client/에서 볼 수 있듯이 ASP.NET MVC5 나 ASP.NET Core MVC에 종속되지 않습니다. .NET 4.5와 Win8/8.1을 대상으로하는 PCL이기 때문에 .NET Core에서도 작동합니다. project.json의 [ "portable-net45 + win8"]'문을 가져 오기만하면됩니다 – Tseng

답변

6

ASP.NET 핵심 프로젝트의 일부가 아닙니다. 그러나 다음과 같이 진행할 수 있습니다 :

HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "http://myurl/api"); 

string json = JsonConvert.SerializeObject(myObj); 

request.Content = new StringContent(json, System.Text.Encoding.UTF8, "application/json"); 

HttpClient http = new HttpClient(); 
HttpResponseMessage response = await http.SendAsync(request); 

if (response.IsSuccessStatusCode) 
    {     
    } 
else 
    { 
    } 
+0

요청 및 http 변수를 폐기해야합니다. – Rolf

9

나는 이것에 대한 크레딧을받을 자격이 없다. 다음 링크에서 @ danroth27 답변을보십시오.

https://github.com/aspnet/Docs/blob/master/aspnetcore/mvc/controllers/testing/sample/TestingControllersSample/tests/TestingControllersSample.Tests/IntegrationTests/HttpClientExtensions.cs

그는 확장 방법을 사용합니다. 코드는 다음과 같습니다. (위의 github 링크에서 복사). .NET 2.0에서 사용하고 있습니다.

using System.Net.Http; 
using System.Net.Http.Headers; 
using System.Threading.Tasks; 
using Newtonsoft.Json; 

namespace TestingControllersSample.Tests.IntegrationTests 
{ 
    public static class HttpClientExtensions 
    { 
     public static Task<HttpResponseMessage> PostAsJsonAsync<T>(
      this HttpClient httpClient, string url, T data) 
     { 
      var dataAsString = JsonConvert.SerializeObject(data); 
      var content = new StringContent(dataAsString); 
      content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); 
      return httpClient.PostAsync(url, content); 
     } 

     public static async Task<T> ReadAsJsonAsync<T>(this HttpContent content) 
     { 
      var dataAsString = await content.ReadAsStringAsync(); 
      return JsonConvert.DeserializeObject<T>(dataAsString); 
     } 
    } 
} 
1

이번이 늦어 지지만 내 생각 엔 그 사람이 도움을 줄 수 있다고 생각합니다. 따라서 *AsJsonAsync() 메서드는 ASP.NET 핵심 프로젝트의 일부가 아닙니다. 내가 당신에게 기능을 제공하는 패키지를 만들었습니다. 당신은 Nuget에서 그것을 얻을 수 있습니다.

https://www.nuget.org/packages/AspNetCore.Http.Extensions

using AspNetCore.Http.Extensions; 
... 
HttpClient client = new HttpClient(); 
client.PostAsJsonAsync('url', payload); 
관련 문제