今天和同事调试接口,由于产品设计的问题,传递的参数没有做任何的限制。同事就在传参数的时候加了些特殊字符到后台,但是后台打印的日志是 null... 然后上网搜了下解决办法:转 https://www.cnblogs.com/panie2015/p/5885922.html
1)下面列出了一些URL特殊符号及编码十六进制值
- + URL 中+号表示空格 %2B
- 空格 URL中的空格可以用+号或者编码 %20
- / 分隔目录和子目录 %2F
- ? 分隔实际的 URL 和参数 %3F
- % 指定特殊字符 %25
- # 表示书签 %23
- & URL 中指定的参数间的分隔符 %26
- = URL 中指定参数的值 %3D
2)java 实现
如果代码采用java 来访问请求的话,可以采用 URLEncoder.encode(param,"utf-8") 将参数值编码,对应的解码方法为URLEncoder.decode()
java.net.URLEncoder.encode(String s)和java.net.URLDecoder.decode(String s);
比如
1
|
String str = "http://localhost:8980/select?param=" + URLEncoder.encode( "bcpuser$userid$1#3#4" , "utf-8" ) ; <br>//得到结果 http://localhost: 8980 /BCPClientServer/select?param=bcpuser%24userid% 241 % 233 % 234 |
得到url 可以直接在浏览器上访问,如果后台采用的java+ springMVC,可以直接得到预期的参数(无需再次解码的)