原本的代码:
HttpPost httpPost = new HttpPost(url);
网上都说是地址中涉及了特殊字符,不能直接用String代替URI来访问,可以试着去掉字符串url中的特殊字符,但是这样还是不行试试下面的方法
url = url.replaceAll("&", "%26");
url = url.replaceAll(" ", "%20");
? | %3F |
---|
& | %26 | 一竖 | %26 | # | %23 | / | %2F | + | %2B | % | %25 | 空格 | %20 |
我替换上面的特殊字符后还是不行,只能先把String转成URL,再能过URL生成URI的方法来解决问题
修改为:
URL url1 = new URL(url.trim());
URI uri = new URI(url1.getProtocol(),url1.getHost(), url1.getPath(), url1.getQuery(), null);
HttpPost httpPost = new HttpPost();
httpPost.setURI(uri);
但是这样写会去掉端口号,修改为:
URL url1 = new URL(url.trim());
URI uri = new URI(url1.getProtocol(),url1.getHost()+":"+url1.getPort(), url1.getPath(), url1.getQuery(), null);
HttpPost httpPost = new HttpPost();
httpPost.setURI(uri);
|