java.net.URISyntaxException的解决办法

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 16:44   1655   0

近日在用HttpClient访问厂商数据时,为了省力,直接采用

String url = "http://api.liqwei.com/currency/?exchange=usd|cny&count=1"; 
HttpClient client = new DefaultHttpClient(); 
HttpGet httpget = new HttpGet(url); 
HttpResponse response = client.execute(httpget);

以前用这种方法都没有问题,但这次却报如下错误:

java.net.URISyntaxException: Illegal character in query at index 44

查找了一些网上资料,说地址中涉及了特殊字符,如‘|’‘&’等。所以不能直接用String代替URI来访问。必须采用%0xXX方式来替代特殊字符。但这种办法不直观。所以只能先把String转成URL,再能过URL生成URI的方法来解决问题。代码如下

URL url = new URL(strUrl); 
URI uri = new URI(url.getProtocol(), url.getHost(), url.getPath(), url.getQuery(), null); 
HttpClient client = newDefaultHttpClient(); HttpGet httpget = new HttpGet(uri);
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP