C# 如何按WebClient或HttpClient发布产品列表,以及如何为其指定WebAPI控制器?
我有WebAPI控制器的方法:C# 如何按WebClient或HttpClient发布产品列表,以及如何为其指定WebAPI控制器?,c#,list,http-post,webclient,asp.net-web-api,C#,List,Http Post,Webclient,Asp.net Web Api,我有WebAPI控制器的方法: [HttpPost] public void ChangeProducts(List<Product> products) { // ... } 或通过HttpClient: using (var hc = new HttpClient()) { var val = JsonConvert.SerializeObject(products);
[HttpPost]
public void ChangeProducts(List<Product> products)
{
// ...
}
或通过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;
}
但在控制器中,列表为空,不为空,但没有项
为什么?我找到了解决办法。它的工作原理是:
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;
}
你确定你的列表包含元素吗?@YuvalItzchakov,是的。有元素。请添加产品类的声明并向我们显示生成的JSON{CurrencyCode:null,DeliveryKey:X:1:2:1:23,预计发货日期:2014-11-22T12:10:27.2342536Z,保证发货日期:2014-10-23T12:10:27.2342536Z,报价:A0041:JS:HINO:AFL,订单ID:828,价格:316.9100,数量:1,数量批次:0,数量单位:null,SellerOrderKey:null,状态:NotAddedInBasket,状态注释:null,用户ID:2}它是JSON,与模型的属性名称相同。不要使用Task.Result。这可能会导致死锁。请使用WebClient.Tnx查看同步api,但它就是一个例子。我使用异步/等待方法。
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;
}