时间:2021-05-19
今天遇到一个需求,需要处理通过接口传过来的一个参数,参数内容为一个拼接好的Url地址,且该地址还会携带了一些额外的参数,包括但不限于数字,字符串,json串。样例如下:
https://shequ.jb51.net/?url=/?id=15&data={"id":12,"name":"今天天气不错"}现在的问题就是,我需要将url参数中的data值的json中的id修改为url参数中id的值,然后再拼接成完整的url去获取数据。简单来说就是将url进行如下改变,现在问题的重点就在于如何根据url获取对应的参数值了。
//处理前https:///?id=15&data={"id":12,"name":"今天天气不错"}//处理后https:///?id=15&data={"id":15,"name":"今天天气不错"}Url编码
这里插一句,在将url作为参数进行请求的时候,需要注意一些特殊字符(比如 ? "" / 等)对请求的影响,特别是发送Get请求的时候。可以在发送请求前,先对url进行编码处理。
encodeURIComponent(url) //jsHttpUtility.UrlEncode(url) //C#url.QueryEscape(url) //Go获取Url参数
仔细思考了下,解析url获取参数的也无非通过分割关键字符来实现。区别就是分割字符的方式是通过正则匹配或者遍历字符罢了。下面就介绍框架带的方法,然后通过总结一些规律,最后自己实现一个方法。
我知道肯定有很多朋友经常使用HttpUtility类中的UrlEncode/UrlDecode方法,其实该类还有一个ParseQueryString方法,用来解析url参数。该方法需要传入url参数部分字符串,然后返回一个NameValueCollection对象(以key/value的形式记录了所有参数)。
string url = "https:///?id=15&data={'id':12,'name':'今天天气不错'}";var uri = new Uri(url);var collection= HttpUtility.ParseQueryString(uri.Query);//默认采用UTF-8编码,当然也可以传入特定编码进行解析//var collection= HttpUtility.ParseQueryString(uri.Query,Encoding.ASCII);Console.WriteLine(collection["data"]);//输出结果: {'id':12,'name':'今天天气不错'}该方法有几个要注意的点
基于上述一些要求就可以自己写一个解析参数的方式了。
public static Dictionary<string, string> ParseQueryString(string url){ if (string.IsNullOrWhiteSpace(url)) { throw new ArgumentNullException("url"); } var uri = new Uri(url); if (string.IsNullOrWhiteSpace(uri.Query)) { return new Dictionary<string, string>(); } //1.去除第一个前导?字符 var dic = uri.Query.Substring(1) //2.通过&划分各个参数 .Split(new char[] { '&' }, StringSplitOptions.RemoveEmptyEntries) //3.通过=划分参数key和value,且保证只分割第一个=字符 .Select(param => param.Split(new char[] { '=' }, 2, StringSplitOptions.RemoveEmptyEntries)) //4.通过相同的参数key进行分组 .GroupBy(part => part[0], part => part.Length > 1 ? part[1] : string.Empty) //5.将相同key的value以,拼接 .ToDictionary(group => group.Key, group => string.Join(",", group)); return dic;}总结
总体来说这只是一个小小的功能点,往往框架本身就帮我们封装好了解析url获取参数的方法,但是自己去实现的时候,可能就会有这样那样的情况没有考虑到。最后如果有遇到相似需求的朋友,我建议还是用HttpUtility.ParseQueryString()吧~~~
以上就是C# 如何解析获取Url参数值的详细内容,更多关于c# 解析获取Url参数值的资料请关注其它相关文章!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
PHP中解析url并得到url参数这里介绍两种对url操作的方法:1、拿到一个完整url后,如何解析该url得到里面的参数。/***解析url中参数信息,返回参
本文实例讲述了C#分析URL参数获取参数和值对应列表的方法。分享给大家供大家参考。具体分析如下:这个C#函数用于分析url中传递的所有参数,输出一个参数名和参数
复制代码代码如下://*jQueryurlgetparametersfunction[获取URL的GET参数值]//*character_setUTF-8//*
functionrequest(paras){//获取url的参数值,不区分大小写,如无此参数,返回空字符串.varurl=location.href;varp
1.介绍几种如何处理url中的参数的注解@PathVaribale获取url中的数据@RequestParam获取请求参数的值@GetMapping组合注解,是