今天和同事調試接口,由於產品設計的問題,傳遞的參數沒有做任何的限制。同事就在傳參數的時候加了些特殊字符到后台,但是后台打印的日志是 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,可以直接得到預期的參數(無需再次解碼的)