dotnet 找不到 PostAsJsonAsync 方法

  • 2019 年 10 月 8 日
  • 筆記

在網路編程可以使用 PostAsJsonAsync 這個方便的方法將一個對象作為 json 推送到伺服器,這個方法是一個擴展方法,在之前的框架,可以在 System.Net.Http.dll 找到這個好用的擴展方法,但是在 4.5 的時候就被移除了。本文告訴大家如何安裝這個擴展方法

在新的版本,可以通過安裝 Microsoft.AspNet.WebApi.Client 這個庫使用,支援 .NETFramework 4.5 和 .NETStandard 2.0 另外不要看這個庫的命名空間包含了 AspNet 其實這個庫就是一些擴展方法,沒有引用任何 AspNet 程式碼

在使用的時候,需要引用 System.Net.Http 命名空間,然後就可以使用下面的程式碼

           await httpClient.PostAsJsonAsync(url, obj);

其實自己寫一個擴展方法也是不錯,例如我就需要通過 Get 一個對象,可以這樣寫

using System.Net.Http;  using System.Threading.Tasks;  using Newtonsoft.Json;        public static class HttpClientExtensions      {          public static async Task<T> GetObjectAsync<T>(this HttpClient httpClient, string url)          {              var str = await httpClient.GetStringAsync(url);              return JsonConvert.DeserializeObject<T>(str);          }      }

通過自己定義擴展方法,可以讓網路編程的時候減少重複程式碼