win10 uwp 客戶端如何傳送類到 asp dotnet core 作為引數
本文告訴大家如何在 UWP 或 WPF 客戶端通過將類轉換為 json 傳送到 asp dotnet core 作為方法的引數
熟悉客戶端開發的小夥伴在看到 asp dotnet core 會發現在使用的時候實際上只是在方法上面新增一個特性,這時通過 URL 訪問的資料就會通過路由呼叫到這個方法,那麼如何在客戶端通過 URL 呼叫到方法在方法裡面傳入類引數?
假設有這樣的一個類
public class KebunerNeefunadrow { /// <summary> /// 包的名 /// </summary> public string Name { get; set; } public string Version { set; get; } }
需要將這個類作為引數,傳送到 asp dotnet core 的一個方法裡面
[HttpPost("Download")] public ActionResult Download([FromBody]KebunerNeefunadrow saljudecooBolor)
可以通過在客戶端用 Json.NET 將類轉換為 json 然後呼叫 URL 這樣預設通過 json 轉換的 asp dotnet core 就會將 json 轉換為類,然後傳入下載方法
這裡的 asp dotnet core 的方法有兩個要求,第一個是特性使用 Post 方法[HttpPost("Download")]
這樣就告訴 asp dotnet core 這個方法需要通過 Post 呼叫,同時這個方法的 URL 是api/xx/Download
傳入的引數同樣有一個特性[FromBody]
這個特性告訴 asp dotnet core 這個引數從 Post 的內容拿到
在客戶端需要通過下面程式碼轉換類為json才可以傳送
var kebunerNeefunadrow = new KebunerNeefunadrow() { Name = "lindexi", Version = new Version("5.1.2").ToString() }; var json = JsonConvert.SerializeObject(kebunerNeefunadrow);
傳送 Json 的方法可以通過 HttpClient 傳送內容,傳送的內容需要通過 ContentType 告訴伺服器傳送的是 json 才可以
var stringContent = new StringContent(json); stringContent.Headers.ContentType.MediaType = "application/json";
特別注意,預設傳送的是文字,需要通過 ContentType 修改為 json 才可以在伺服器使用 json轉換
通過 httpClient 傳送的程式碼請看下面
var json = JsonConvert.SerializeObject(kebunerNeefunadrow); var response = await httpClient.PostAsync(url, stringContent);
這樣就可以在 UWP 或 WPF 客戶端呼叫 asp dotnet core 的方法,在這個方法傳入引數