难题描述
我们在对接第三方系统的情况下一般必须get或post来传输数据,但这时假如参数中存有&% #*!包含空格符等特殊字符的情况下就没法一切正常要求主要表现在参数获得有误或是获得不上参数,乃至有时会立即断开推送的要求。
解决方案
特殊符号在url中不可以一切正常传送大家最先肯定是考虑到对其开展URL编码,不一样語言url编号封裝的方式很有可能各有不同,由于我这儿是应用c# 后台管理跟第三方系统对接 ,因此 立即考虑到c# 类库封裝的方式了
c#中有三种url编号的方法分别是
1 HttpUtility.UrlEncode
2 Server.UrlEncode
3 Uri.EscapeUriString
这儿也不详尽比照他们的优点和缺点了 ,由于这儿我目地取决于难题的处理和纪录,因此 只描述一下全过程中碰到的难题和该留意的地区,
1 最先HttpUtility.UrlEncode 对空格符的解决是使其变为 的标记例如你有一个那样的字符串数组 : "提交订单時间:2017/3/28 23:05:51" 留意在其中有一个空格符相匹配形成的字符串数组是:"提交订单時间:2017/3/28 23:05:51" ,空格符变成了 标记,因此 传送的情况下应当做相对的解决,
我这里的解决方案是把编号后的字符串数组中的 标记再换成相匹配的编码格式, 如utf8 空格符应当编号成 ,因此 要是把 标记换成 ,
2 第二要留意的便是Uri.EscapeDataString 尽管沒有全部的空格符变减号的难题可是被编号的字符串数组有长短限定,限定的长短32766字符 超出则会抛出异常 ,实际上用方法以下
之上二种方法默认设置编号全是utf8 编号自然还可以换为其他文件格式。
时尚博主网站地址:http://www.siyouku.cn
文中永久性更准详细地址:http://siyouku.cn/article/6820.html