【问题标题】:java.net.URISyntaxException when i try to post a URL当我尝试发布 URL 时出现 java.net.URISyntaxException
【发布时间】:2015-01-21 09:37:32
【问题描述】:

您好,我正在使用以下代码使用 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);

【问题讨论】:

  • 是edistrict&&MSG吗?
  • 是的,我已经删除了一个 &

标签: java apache url


【解决方案1】:

您应该先encodeMSG 字符串,然后再从它创建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() 方法。

【讨论】:

  • 如果我对其进行编码,那么从 URL 获取该数据是否有任何问题
  • org.apache.http.conn.HttpHostConnectException: 我在编码后遇到异常
  • @ASADUL 确保您使用的是有效的主机/IP/文件路径?
  • @ASADUL 它不是一个有效的 IP。我尝试telnet 但无法连接。请重新检查地址,。
【解决方案2】:
  1. 由于竖线 (|) 不是有效的 URI 字符,这就是您收到 URISyntaxException 的原因。 解决方案: 正如 kaysush 所建议的,您需要对您的网址进行编码/解码。 有关更多信息,请查看以下网址: Cannot process url with vertical/pipe bar
  2. 您没有在此处解释您要达到的目标。我希望这不是错误的。但 根据您的问题,您正在尝试发布一个网址,并且在您的代码中您正在使用 HttpGet(url);

【讨论】:

  • 我只想将参数发布到该 url,以便我们可以获取该 url 的参数形式
猜你喜欢
  • 1970-01-01
  • 2015-12-28
  • 2018-02-02
  • 2016-03-23
  • 2012-11-25
  • 1970-01-01
  • 2020-03-19
  • 2015-01-21
  • 2023-04-09
相关资源
最近更新 更多