如何通过WebClient或HttpClient POST产品列表,以及如何为其提供WebAPI控制器
本文关键字:控制器 WebAPI WebClient 何通过 HttpClient 产品列表 POST | 更新日期: 2023-09-27 18:27:38
我有WebAPI控制器的方法:
[HttpPost]
public void ChangeProducts(List<Product> products)
{
// ...
}
我尝试通过WebClient发送一个列表:
using (var wc = new WebClient())
{
wc.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
string sl = JsonConvert.SerializeObject(products);
var r = wc.UploadString(_orderServiceUrl, sl);
}
或通过HttpClient:
using (var hc = new HttpClient())
{
var val = JsonConvert.SerializeObject(products);
hc.BaseAddress = new Uri(_orderServiceUrl);
hc.DefaultRequestHeaders.Add("Accept", "application/json");
HttpResponseMessage r = hc.PostAsync(_orderServiceUrl, new StringContent(val)).Result;
}
但在控制器中,列表是空的(不是null,但没有项目)。
为什么?
我找到了解决方案。它起作用:
using (var hc = new HttpClient())
{
hc.BaseAddress = new Uri(_orderServiceUrl);
hc.DefaultRequestHeaders.Accept.Clear();
hc.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = hc.PostAsJsonAsync("", products).Result;
}