2015-01-21 49 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

相关问题