HttpClient抓取数据出现java.net.URISyntaxException: Expected authority at index 8: https://

最近在使用HttpClient抓取京东的数据时。爬取爬到一半突然出现一个错误。如下:

 

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

URI uri = null;
        try {
            URL url2 = new URL(strUrl);
            uri = new URI(url2.getProtocol(), url2.getHost(), url2.getPath(), url2.getQuery(), null);

        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (URISyntaxException e) {
            e.printStackTrace();
        }
// 创建httpGet请求对象,设置url地址
HttpGet httpGet = new HttpGet(uri);
 

即可解决这个问题

 

posted @ 2020-09-22 09:31  Mr.落魄书生  阅读(999)  评论(0编辑  收藏  举报