【发布时间】:2014-05-08 16:04:01
【问题描述】:
我使用HttpClient.GetAsync() 方法。我有一个类别列表,想在查询字符串中传递它。
var categories = new List<int>() {1,2};
如何在查询字符串中传递List<int>/List<string>?
例如,https://example.com/api?categories=1,2
当然可以使用foreach和StringBuilder。但也许有更好的方法来做到这一点?
例如,使用 .PostAsync() 和 json 内容非常方便:
var categories = new List<int>() {1,2}; //init List
var parametrs = new Dictionary<string, object>();
parametrs.Add("categories", categories);
string jsonParams = JsonConvert.SerializeObject(parametrs); // {"categories":[1,2]}
HttpContent content = new StringContent(jsonParams, Encoding.UTF8, "application/json");
var response = await httpClient.PostAsync(new Uri("https://example.com"), content);
附:我使用的是 Windows Phone 8。
【问题讨论】:
-
您的代码显示您已经在使用 JSON 来传递内容。为什么不将查询字符串中的列表也作为 JSON 传递?毕竟,JSON 是在字符串中表示数据的好方法。不久前我问过if there'd be problems passing JSON in the URL,结果令人鼓舞。
-
不用循环和
StringBuilder,只需使用string.Join(",", categories)。 -
@mason 如何使用 GetAsync() 在查询字符串中传递 json?抱歉,我不太明白。
-
@JeppeStigNielsen 感谢您的建议
标签: c# .net windows-phone-8 dotnet-httpclient