c#如何解析获取Url参数的值

  

今天遇到一个需求,需要处理通过接口传过来的一个参数,参数内容为一个拼接好的Url地址,且该地址还会携带了一些额外的参数,包括但不限于数字,字符串,json串。样例如下:

        http://www.cplemom.com/& # 63; url=https://www.jb51.net/={" id ": 12,“名字”:“今天天气不错”}      

现在的问题就是,我需要将url参数中值的数据的json中的id修改为url参数中id的值,然后再拼接成完整的网址去获取数据。简单来说就是将url进行如下改变,现在问题的重点就在于如何根据url获取对应的参数值了。

     //处理前   https://www.jb51.net/={" id ": 12,“名字”:“今天天气不错”}//处理后   https://www.jb51.net/={" id ": 15,“名字”:“今天天气不错”}      

<强> Url编码
  

  

这里插一句,在将url作为参数进行请求的时候,需要注意一些特殊字符(比如& # 63;”“/等)对请求的影响,特别是发送得到请求的时候。可以在发送请求前,先对url进行编码处理。

     //js encodeURIComponent (url)//c# HttpUtility.UrlEncode (url)   url.QueryEscape (url)//之前去      

<强>获取Url参数

  

仔细思考了下,解析url获取参数的也无非通过分割关键字符来实现。区别就是分割字符的方式是通过正则匹配或者遍历字符罢了。下面就介绍框架带的方法,然后通过总结一些规律,最后自己实现一个方法。

  

我知道肯定有很多朋友经常使用<代码> HttpUtility> UrlEncode/UrlDecode 方法,其实该类还有一个<代码> ParseQueryString 方法,用来解析url参数。该方法需要传入url参数部分字符串,然后返回一个<代码> NameValueCollection>         字符串url=" https://www.jb51.net/={“id”: 12,“名字”:“今天天气不错“}”;   var=new uri uri (url);      var=HttpUtility.ParseQueryString集合(uri.Query);//默认采用utf - 8编码,当然也可以传入特定编码进行解析//var=HttpUtility.ParseQueryString集合(uri.Query Encoding.ASCII);      Console.WriteLine(集合(“数据”));//输出结果:{“id”: 12,“名字”:“今天天气不错'}      

该方法有几个要注意的点

  
      <李> uri.Query是& # 63;开头的,但是在转为键值对以后被自动过滤掉了,且只会过滤一个& # 63;字符   <李>参数内容会自动使用utf - 8解码李   <李>对于传递的数组参数(& # 63;id=1, id=2),会通过,李   <李>在参数字符中通过,划分后,只会把第一个=前的字符串作为关键
      李   
  

基于上述一些要求就可以自己写一个解析参数的方式了。

        公共静态Dictionary<字符串,string>ParseQueryString(字符串url)   {   如果(string.IsNullOrWhiteSpace (url))   {   把新ArgumentNullException (“url”);   }   var=new uri uri (url);   如果(string.IsNullOrWhiteSpace (uri.Query))   {   返回新Dictionary<字符串,string> ();   }//1 .去除第一个前导& # 63;字符   var dic=uri.Query.Substring (1)//2。通过,划分各个参数   .Split(新char[]{”和“},StringSplitOptions.RemoveEmptyEntries)//3。通过=划分参数键和值,且保证只分割第一个=字符   .Select (param=比;参数。分割(新char [] {'='}, 2, StringSplitOptions.RemoveEmptyEntries))//4。通过相同的参数键进行分组   .GroupBy(=比;[0]部分,一部分=比;部分。长度比;1 & # 63;[1]部分:string.Empty)//5 .将相同键的值以,拼接   .ToDictionary(集团=比;组。关键、组=比;字符串。加入(”、“集团));      返回迪拜国际资本;   }      

<强>总结

  

总体来说这只是一个小小的功能点,往往框架本身就帮我们封装好了解析url获取参数的方法,但是自己去实现的时候,可能就会有这样那样的情况没有考虑到。最后如果有遇到相似需求的朋友,我建议还是用<代码> HttpUtility.ParseQueryString() 吧~ ~ ~

  

以上就是c#如何解析获取Url参数值的详细内容,更多关于c#解析获取Url参数值的资料请关注其它相关文章!

c#如何解析获取Url参数的值