C# 传递查询字符串HttpClient.GetAsync()中的列表的最佳方法

C# 传递查询字符串HttpClient.GetAsync()中的列表的最佳方法,c#,.net,windows-phone-8,dotnet-httpclient,C#,.net,Windows Phone 8,Dotnet Httpclient,我使用HttpClient.GetAsync()方法。我有一个类别列表,希望以查询字符串的形式传递它 var categories = new List<int>() {1,2}; 另外,我使用Windows Phone 8。如果您准备依赖于支持URI模板的库(如我创建的库()),那么您可以灵活地创建URI。完整的规格在这里 首先创建一个URI模板 var template = new UriTemplate("http://example.com/api{?categories

我使用
HttpClient.GetAsync()
方法。我有一个类别列表,希望以查询字符串的形式传递它

 var categories = new List<int>() {1,2};

另外,我使用Windows Phone 8。

如果您准备依赖于支持URI模板的库(如我创建的库()),那么您可以灵活地创建URI。完整的规格在这里

首先创建一个URI模板

var template = new UriTemplate("http://example.com/api{?categories}");
您可以使用简单字符串、字符串列表或字符串键/值对字典来设置参数

 var idList = new string[] {"1", "4", "5", "7", "8"};
 template.SetParameter("id",idList);
然后您可以解析参数以创建完整的URI

  var uri = template.Resolve();
  Debug.Assert(uri == "http://example.com/api?categories=1,4,5,7,8");
好的方面是,如果您有其他查询参数,或者有需要编码的字符,URI模板处理器也会为您处理所有这些


扩展测试套件让您了解支持的一些疯狂的东西

您的代码显示您已经在使用JSON来传递内容。为什么不将查询字符串中的列表也作为JSON传递呢?毕竟,JSON是用字符串表示数据的好方法。我不久前问过,结果令人鼓舞。不用循环和
StringBuilder
,只需使用
string.Join(“,”,categories)
@mason如何使用GetAsync()在查询字符串中传递json?对不起,我不太明白。@JeppeStigNielsen谢谢你的建议
  var uri = template.Resolve();
  Debug.Assert(uri == "http://example.com/api?categories=1,4,5,7,8");