功能:售後地址的驗證 當用戶點擊某地址時,將地址信息傳遞到後臺,再從後臺調用接口,判斷用戶地址填寫是否正確
解析地址功能的實現層代碼(簡化過的)
publicvoidaddressResolution(String address, String id) {
String addresses ="{\"id\":\""+ id + "\",\"address\":\""+ address +"\"}";//將傳遞的兩個值賦值給string
try{
String response=HttpClientUtil.doGetUrl(http://baidu.com?addresses=["+ addresses +"]");//注意:在發送請求時一定要填寫http://或https://
} catch (Exception e) {
e.printStackTrace();
}
}
在執行之後發生的異常信息
java.lang.IllegalArgumentException: Illegal character in query at index 82: http://10.138.225.240:10061/internalapi/hsi/analyticSuperMapAPI/fendan?addresses=[{"id":"111","address":"山東省日照市嵐山區"}]
at java.net.URI.create(URI.java:852)
at org.apache.http.client.methods.HttpGet.<init>(HttpGet.java:66)
.....................................................
2018-04-19 09:09:10.575 ERROR 7892 --- [tp1021786447-94] c.h.h.e.s.w.WorkOrderServiceImpl : 地址分單異常信息:java.lang.IllegalArgumentException: Illegal character in query at index 82: http://10.138.225.240:10061/internalapi/hsi/analyticSuperMapAPI/fendan?addresses=[{"id":"111","address":"山東省日照市嵐山區"}]
異常原因:更確切的講,當URL地址裏包含非西歐字符的字符串時,瀏覽器都會將這些非西歐字符串轉換成application/x-www-form-urlencoded MIME 字符串。在開發過程中,我們可能涉及將普通字符串和這種特殊字符串的相關轉換,這就需要使用URLDecoder和URLEncoder類進行實現,其中:
URLDecoder類包含一個decode(String s,String enc)靜態方法,它可以將application/x-www-form-urlencoded MIME字符串轉成普通字符串;
URLEncoder類包含一個encode(String s,String enc)靜態方法,它可以將普通字符串轉換成application/x-www-form-urlencoded MIME字符串。
所以在這裏使用URLEncoder方法
導包 import java.net.URLEncoder;
publicvoidaddressResolution(String address, String id) {
String addresses ="{\"id\":\""+ id + "\",\"address\":\""+ address +"\"}";
String addresses =URLEncoder.encode(param); //url中有漢字或特殊字符(非字母和數字的字符),實現 轉碼
try{
String response = HttpClientUtil.doGetUrl(http://baidu.com?addresses=["+ addresses +"]");
} catch (Exception e) {
e.printStackTrace();
}
}
執行成功