2015-01-21 47 views
0

你好我用下面的代碼發送使用Apache的HttpClient一個URL,但它一直呈現出異常:java.net.URISyntaxException:java.net.URISyntaxException當我嘗試發佈一個URL

Illegal character in query at index 70: http://192.155.2.144:8080/SDAX/homePage.do?actionFlag=istrict&&MSG=1|Bdrtfggf|254td|return|null|null|null 

請幫助我在哪裏做這個問題。下面的代碼我發送一個URL

 String MSG="1|Bdrtfggf|254td|return|null|null|null" ; 
     String url="http://192.168.2.144:8080/SDAX/homePage.do?actionFlag=edistrict&&MSG="+MSG; 
     System.out.println("Url is"+url); 

     //String url = "http://192.168.0.6:8084/NRC_NEW_SEARCH/getVillageList.req?dist_id=1"; 
     //String url="http://192.168.0.85:8080/poly/web/"; 
     //FacesContext.getCurrentInstance().getExternalContext().redirect(url); 
     //ExternalContext context = FacesContext.getCurrentInstance().getExternalContext(); 
     //context..redirect(url); 
     HttpRequestBase request = new HttpGet(url); 
     /*HttpParams params = new BasicHttpParams(); 
     params.setParameter("dist_id", "1"); 
     request.setParams(params);*/ 
     HttpClient httpClient = new DefaultHttpClient(); 
     httpClient.execute(request); 
+0

是否edistrict &&味精? – 2015-01-21 09:42:22

+0

是的,我已經刪除了一個&從那 – ASADUL 2015-01-21 09:51:14

回答

0

你應該encode創建從它URLMSG字符串。

String encodedMSG = URLEncoder.encode(MSG, "UTF-8") 
String url="http://192.168.2.144:8080/SDAX/homePage.do?actionFlag=edistrict&&MSG="+ encodedMSG; 

編輯

不會有在編碼後檢索數據的任何問題。如果你編寫了這個servlet,那麼你應該使用URLDecoder.decode()方法。

+0

如果我編碼它然後有任何問題,從URL中獲取該數據 – ASADUL 2015-01-21 09:50:35

+0

@ASADUL檢查編輯我對我的ansewer – kaysush 2015-01-21 09:53:04

+0

org.apache.http.conn.HttpHostConnectException:例外我正在編碼 – ASADUL 2015-01-21 09:53:57

0
  1. 由於垂直條(|)不是有效的URI字符,所以您得到URISyntaxException。 解決方案: 正如kaysush所建議的,您需要對您的網址進行編碼/解碼。 欲瞭解更多,請查看以下網址: Cannot process url with vertical/pipe bar
  2. 你沒有解釋你在這裏試圖達到什麼。我希望這不是錯誤的。但 根據你的問題,你正在嘗試發佈一個url,並在你的代碼中使用HttpGet(url);
+0

我只想將該參數發佈到該網址,以便我們可以獲取該網址的參數表單 – ASADUL 2015-01-21 12:09:47

相關問題