java.net.URISyntaxException当我尝试发布一个URL

时间:2015-01-21 09:37:32

标签: java apache url

您正在使用apache HttpClient通过使用以下代码发送网址,但它一直显示异常: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);

2 个答案:

答案 0 :(得分:0)

在创建encode之前,您应该MSG URL字符串。

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,则应在其中使用URLDecoder.decode()方法。

答案 1 :(得分:0)

  1. 由于竖线(|)不是有效的URI字符,因此您获得URISyntaxException。 的解决方案: 根据kaysush的建议,您需要对您的网址进行编码/解码。 有关这方面的更多信息,请查看以下网址: Cannot process url with vertical/pipe bar
  2. 你没有解释你在这里想要达到的目标。我希望这不是错误的。但 根据您的问题,您正在尝试发布网址,并在您的代码中使用HttpGet(网址);