繁体   English   中英

如何通过WebClient或HttpClient发布产品列表,以及如何为其使用WebAPI控制器?

[英]How to POST list of Product by WebClient or HttpClient and how to whire WebAPI controller for it?

我有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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM