问题描述
使用WebClient通过查询字符串将数组发送到ApiController时出现错误400。
api方法看起来像
public IHttpActionResult List([FromUri] Model model)
在Model类中,我有
public int[] Ids { get; set; }
在客户端,代码如下:
webClient.QueryString.Add("ids","1");
webClient.QueryString.Add("ids","2");
...
await webClient.DownloadStringTaskAsync(url);
如果我仅发送一个“ ids”参数,则代码可以正常运行,但不能同时使用两个或多个。
我发现客户端创建的网址类似于“ url?ids = 1,2”而不是“ url?ids = 1&ids = 2”。
我错过了一些配置吗?
解决方法
WebClient
会自动将具有相同键的多个值转换为逗号分隔的字符串。您可以更改此行为,请参见:How to build WebClient querystring with duplicate keys?
我建议尽管使用HttpClient
而不是WebClient
。