java.net.URISyntaxException: Illegal character in query at index,http请求url中有非法字符导致

在url中包含(‘|’‘&’)这些字符直接用HttpClient请求就会报上述错误,

在网上看了一下解决办法有两种都是将非法字符进行转码再请求

列如:String url=http://baidu/yztb/createDownloadReturnFile2.action?key2=330802196704034461|tz_gaj_cer_052|8d255559-eefd-4e97-ad82-63ae49896847.pdf

一、
import java.net.URI;
import java.net.URL;

URL url1 = new URL(url);
URI uri = new URI(url1.getProtocol(), url1.getHost(), url1.getPath(), url1.getQuery(), null);
HttpClient client = new DefaultHttpClient();
HttpGet httpget = new HttpGet(uri);
HttpResponse response = client.execute(httpget);

HttpEntity entity = response.getEntity();

 

二、
import java.net.URLEncoder;

String path = URLEncoder.encode(strUrl,"utf-8");

个人比较偏向第一种方法,因为第二种转义会将url中所有的字符都转义,导致请求错误

 

参考:https://blog.csdn.net/qq_34972627/article/details/74908653
           https://www.cnblogs.com/qianzf/p/8541925.html

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值