`

java.net.URISyntaxException的解决办法

    博客分类:
  • java
 
阅读更多

java.net.URISyntaxException的解决办法

近日在用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);
分享到:
评论
2 楼 阳光泛滥的日子 2017-04-05  
很好用谢谢
1 楼 bellawang 2014-01-13  
很好用谢谢

相关推荐

    GetURI:强制无效的 URI 满足 java.net.URI

    修复了尝试使用(或通过库使用)java.net.URI 时的 URISyntaxException。 现在您可以再次使用 Java!获取URI 或者试一试。 有一个带有一个静态方法的类。 它接受任意 URL 并将其转换为 java.net.URI 执行任何必要的...

    link-checker:一个简单的网站链接检查器

    链接到 :索引 80 处查询中的非法字符: : en&q=allinurl:file+java.sun.com&btnI=I'm% 链接到 :索引 80 处查询中的非法字符: 链接到 : java.net.URISyntaxException: 索引 80 处查询中的非法字符: 链接到...

    hibernate 自动导入 sql 文件 import.sql 国际化编码的问题的解决方案

    import java.net.URISyntaxException; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; public class HibListener implements ServletContextListener { @Override...

    eclipse开发hadoop的最基础操作及图视

    import java.net.URISyntaxException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileStatus; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; ...

    本地文件上传到HDFS

    import java.net.URISyntaxException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; ``` 这些包为处理HDFS提供了必要的工具,如处理...

    用java打开一个网页

    import java.net.URI; public class Main { public static void main(String[] args) { try { // 创建URI对象,代表你要打开的网页URL URI uri = new URI("http://www.example.com"); // 获取本地桌面环境...

    基于Java Swing的超链接标签

    new java.net.URI(LinkLabel.this.url)); } catch (Exception ex) { } } }); } private void setText(boolean b) { if (!b) setText("<html><font color=blue><u>" + text); else setText("<html><font ...

    Hive1.2.1安装指南

    Exception in thread "main" java.lang.RuntimeException: java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%...

    Java深度历险

    import java.net.URI; import java.util.Arrays; import java.util.List; public class CompilerTest { public static void main(String[] args) throws Exception { String source = "public class Main { ...

    【HDFS篇03】HDFS客户端操作 --- 开发环境准备1

    import java.net.URISyntaxException; public class HDFSClient { @Test public void testMkdirs() throws IOException, InterruptedException, URISyntaxException { // 1. 获取文件系统配置 Configuration ...

    Exercicios_URI_em_Java:没有网站,没有URI Em Java

    2. **java.net.URI类**:Java标准库提供了`java.net.URI`类来创建、解析和操作URI。这个类遵循RFC 3986规范,是处理URI的主要工具。例如,你可以创建一个新的URI实例,像这样:`URI uri = new URI(...

    java读取resource目录下文件的方法示例

    import java.net.URISyntaxException; public class TestDemo { public static void main(String[] args) throws URISyntaxException, IOException { BufferedInputStream bufferedInputStream = ...

    使用java代码获取新浪微博应用的access token代码实例

    import java.net.URISyntaxException; import org.apache.http.HttpEntity; import org.apache.http.HttpHost; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache...

    SHAJ_URI_Solve_java

    在Java中,`java.net.URI`类提供了对URI的支持,包括创建、解析、比较和操作URI。以下是一些关键知识点: 1. **创建URI对象**: 使用`URI`类的构造函数,你可以创建一个新的URI对象。例如: ```java URI uri = ...

    uri-problems

    - `java.net.URL`类可以转换为`URI`,但不是所有URI都能转换回URL,因为某些URI可能不适合定位资源。 - `new URL(URI uri)`和`URI.toURL()`是两者之间的转换方法。 6. 文件系统URI: - Java的`URI`类也可以用于...

    RhodyMap:URI 映射

    `java.net.URL`类提供了打开到资源的连接,`java.net.URLConnection`则用于与该资源进行交互。 4. **HTTP通信**:对于Web应用,RhodyMap可能使用了Java的`HttpURLConnection`或第三方库如Apache HttpClient来发送...

    URI:解决了URI问题!

    在Java中,`java.net.URI`类是处理URI的核心工具。你可以使用这个类来创建、解析、比较和操作URI。创建一个URI对象的常见方式如下: ```java URI uri = new URI("http", "example.com", "/path/to/resource", ...

    基于Java的实例开发源码-QR解码的实现程序.zip

    在这个实例中,`codefans.net`可能是一个网站链接或者解码后的文本数据。如果`decodedData`是一个URL,可以使用`java.awt.Desktop`类打开浏览器访问该链接: ```java if (Desktop.isDesktopSupported()) { ...

Global site tag (gtag.js) - Google Analytics