功能:售後位址的驗證 當使用者點選某位址時,将位址資訊傳遞到背景,再從背景調用接口,判斷使用者位址填寫是否正确
解析位址功能的實作層代碼(簡化過的)
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();
}
}
執行成功
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiYWan5SZslWbz9CX0xWdhZWZk9CX09Wbl9lcvRXakVGa49CXy9GdpRWZoh3LcRXZu5ibkN3Yuc2bsJWLjlGdhR3cvw1LcpDc0RHaiojIsJye.gif)
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiYWan5SZslWbz9CX0xWdhZWZk9CX09Wbl9lcvRXakVGa49CXy9GdpRWZoh3LcRXZu5ibkN3Yuc2bsJWLjlGdhR3cvw1LcpDc0RHaiojIsJye.gif)
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiYWan5SZslWbz9CX0xWdhZWZk9CX09Wbl9lcvRXakVGa49CXy9GdpRWZoh3LcRXZu5ibkN3Yuc2bsJWLjlGdhR3cvw1LcpDc0RHaiojIsJye.gif)