Get傳遞參數時發生java.lang.IllegalArgumentException異常

功能:售後地址的驗證 當用戶點擊某地址時,將地址信息傳遞到後臺,再從後臺調用接口,判斷用戶地址填寫是否正確

解析地址功能的實現層代碼(簡化過的)

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();
            }
}

執行成功微笑微笑微笑

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章