当我尝试发布URL时出现java.net.URISyntaxException

当我尝试发布URL时出现java.net.URISyntaxException,java,apache,url,Java,Apache,Url,Hi-am使用以下代码使用apache HttpClient发送url,但出现异常:java.net.URISyntaxException: 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 请帮我解决这个问题的地方。下面的代码我正在发送一

Hi-am使用以下代码使用apache HttpClient发送url,但出现异常:java.net.URISyntaxException:

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

在创建
URL
之前,应该对
MSG
字符串进行
encode
编码

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

编码后检索数据不会有任何问题。如果您已经编写了这个servlet
homePage.do
,那么您应该在其中使用
urldecode.decode()
方法

  • 因为竖条(|)不是有效的URI字符,所以您得到的是URISyntaxException。 解决方案: 正如kaysush所建议的,您需要对url进行编码/解码。 有关详细信息,请查看以下url:
  • 你还没有解释你想在这里实现什么。我希望这不是错的。但是 根据您的问题,您正在尝试发布一个url,并且在代码中使用了HttpGet(url)
    是edistrict&&MSG吗?是的,我已经从中删除了一个&如果我对它进行编码,那么从URLorg.apache.http.conn.HttpHostConnectException获取该数据是否有任何问题:我正在获取的异常encode@ASADUL确保您使用的是有效的主机/ip/文件路径?@ASADUL它不是有效的ip。我试图
    telnet
    it,但无法连接。请重新检查地址。我只想将参数发布到该url,以便我们可以从该url获取参数