winfrom 或控制檯程序向webapi提交數據是數據是JSON數據時需要對數據進行處理才能傳過去參考如下
需要用Newtonsoft.Json.JsonConvert.SerializeObject 序列化一下才能傳
/// <summary>
/// HttpClient實現Post請求
/// </summary>
public static async Task<string> Post(string url, Dictionary<string, string> requestParameters)
{
//設置HttpClientHandler的AutomaticDecompression
var handler = new HttpClientHandler() { AutomaticDecompression = DecompressionMethods.GZip };
//創建HttpClient(注意傳入HttpClientHandler)
using (var http = new HttpClient(handler))
{
var json = Newtonsoft.Json.JsonConvert.SerializeObject(requestParameters);
HttpContent httpContent = new StringContent(json);
httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
//await異步等待迴應
var response = await http.PostAsync(url, httpContent);
//確保HTTP成功狀態值
response.EnsureSuccessStatusCode();
//await異步讀取最後的JSON(注意此時gzip已經被自動解壓縮了,因爲上面的AutomaticDecompression = DecompressionMethods.GZip)
return await response.Content.ReadAsStringAsync();
}
}