Http請求特殊符號變空格的問題解決
阿新 • • 發佈:2019-02-19
今天在除錯客戶端向伺服器傳遞引數時,url中的引數值出現+,空格,/,?,%,#,&等特殊符號的時候就自動變成空格,
在伺服器端無法獲得正確的引數值
解決方法如下:
URL字元轉義 對應的16進位制字符集編碼
+ URL 中+號表示空格 %2B
空格 URL中的空格可以用+號或者編碼 %20
/ 分隔目錄和子目錄 %2F
? 分隔實際的URL和引數 %3F
% 指定特殊字元 %25
# 表示書籤 %23
& URL 中指定的引數間的分隔符 %26
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 方法一、修改客戶端,將客戶端帶“+”的引數中的“+”全部替換為“%2B”,這樣引數傳到伺服器端時就能得到“+”了。
- 方法二、修改伺服器端,將空格替換為“+”,這種方式只適用於引數中有“+”沒有空格的情況。
例子:
String a = reuqest.getParameter("clientStr").replace(' ','+');
- 1
這種方法不建議使用,因為客戶端傳過來的空格引數有可能是其他特殊字元,如果將空格全替換成 ‘+’ 會導致結果不對。
- 方法三、修改伺服器端,將獲取引數的方法由reuqest.getParameter改為request.getQueryString().substring(0),然後對得到的字串進行解析。
例子:
String a =request.getQueryString().substring(0);
- 1
如果客戶端為clientStr=test+OK,那麼a的值為clientStr=test+OK,需要再解析一下,
a=a.substring(10);得到a的值為test+OK。
- 方法五,在安卓裡面post請求的時候最好把請求引數放到body裡面就不會出現這些問題了。
- 方法六,
java URLEncoder.encode(key, "utf8");