首页 / 问答 / C#/.NET/.NET Core应用程序编程开发中如何将多个参数创建/拼接成Url链接地址的查询参数字符串呢?

C#/.NET/.NET Core应用程序编程开发中如何将多个参数创建/拼接成Url链接地址的查询参数字符串呢?

.NET C# URL 参数 .NET Core 2.85K 次浏览
0

在C#/.NET/.NET Core应用程序编程开发中,如果要向远程服务发起HTTP请求,我们首先得将需要的请求参数进行组合,即把参数或者参数集合转换成URL查询字符串,但是在组合这些参数/参数集合的时候又会遇到很多问题,比如向参数字符串追加?或者&符号,如果是第一个参数,那么又不需要加&,还要考虑字符编码等等很多细节需要注意并处理,比如:

StringBuilder SB = new StringBuilder();
if (NeedsToAddParameter A)
{
  SB.Append("A="); SB.Append(HttpUtility.UrlEncode("TheValueOfA"));
}

if (NeedsToAddParameter B)
{
  if (SB.Length>0) SB.Append("&");
  SB.Append("B="); SB.Append(HttpUtility.UrlEncode("TheValueOfB")); }
}

那么有没有一些好的或者是通用的将参数/参数集合转换成URL查询字符串的方法或者类库呢?

回复 [×]
提交评论
请输入评论内容

4 个回答

  • 0

    调用System.Web.HttpUtility.ParseQueryString(string.Empty)方法创建一个HttpValueCollection实例(其实也是一个NaveValueCollection实例),然后再调用NaveValueCollectionAdd()方法向其中添加参数,最后调用ToString()方法即可得到URL编码后的查询参数字符串,如下:

    如果是在.NET Core的应用程序中,请使用Microsoft.AspNetCore.WebUtilities.QueryHelpers类,示例如下:

    关于更多使用请参考:https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.webutilities.queryhelpers

    Rector的个人主页

    Rector

    2020-04-22 回答

    • 0

      在C#/.NET中,Url的查询参数其实是一种叫做NameValueCollection的键-值集合,在组合URL查询参数的时候,我们通常的做法可以是先将查询参数或者参数集合转换成NameValueCollection的键-值集合,然后再对这个键-值集合进行封装,如下:

      Rector的个人主页

      Rector

      2020-04-22 回答

      • 0

        创建一个Uri的静态扩展方法,如下:

        调用示例如下:

        Rector的个人主页

        Rector

        2020-04-22 回答

        • 0

          使用LINQ创建一个关于NameValueCollection的静态扩展方法,如下:

          Rector的个人主页

          Rector

          2020-04-22 回答

          我来回答