近日在用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 = new DefaultHttpClient(); HttpGet httpget = new HttpGet(uri);
相关推荐
修复了尝试使用(或通过库使用)java.net.URI 时的 URISyntaxException。 现在您可以再次使用 Java!获取URI 或者试一试。 有一个带有一个静态方法的类。 它接受任意 URL 并将其转换为 java.net.URI 执行任何必要的...
链接到 :索引 80 处查询中的非法字符: : en&q=allinurl:file+java.sun.com&btnI=I'm% 链接到 :索引 80 处查询中的非法字符: 链接到 : java.net.URISyntaxException: 索引 80 处查询中的非法字符: 链接到...
throws IOException, URISyntaxException { String str = "{name: 'Tokyo',data: [[1283644800000,966],[1283731200000,2475],[1283817600000,3336],[1283904000000,1316]]}," + "{name: 'New York',data:[...
} catch (URISyntaxException e) { throw new RuntimeException(e); }}通过应用com.pivovarit.function功能接口,可以重新获得清晰性和可读性: ThrowingFunction<String, URI, URISyntaxEx
} catch (URISyntaxException e) { Log.e("intent", e.getMessage()); } } else {//未安装 //market为路径,id为包名 //显示手机上所有的market商店 Toast.makeText(getContext(), "您尚未安装百度地图", ...
} catch (URISyntaxException e) { e.printStackTrace(); } if (proxyList != null && proxyList.size() > 0) { proxy = proxyList.get(0); Log.d(TAG, "Current Proxy Configuration: " + proxy.toString());...
HELM2WebService 如何在Tomcat 8.0或更高版本上安装: 在下载HELM2WebService战争文件将war文件重命名为WebService.war 将WebService.war文件复制到... 受保护的静态响应验证(字符串表示法)抛出URISyntaxException
public WebRTCService ( Context context ) throws URISyntaxException { bandwidth = new RTCBandwidthClient (context, this ); bandwidth . setOnConnectListener(() - > { // Start requesting to p