原本的代码:
//String url
HttpPost httpPost = new HttpPost(url);// 创建httpPost
网上都说是地址中涉及了特殊字符,不能直接用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
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
httpPost.setURI(uri);