zoukankan      html  css  js  c++  java
  • Cannot instantiate the type HttpClient问题

    看自己动手写爬虫,没想到一上来就跪了。

    里面提到用的jar包是apache的http客户端开源项目---HttpClient

    就去官网下载了一个版本4.3

    当按书上代码敲时

    HttpClient httpclient = new HttpClient();

    敲完这句,就给跪了

    提示Cannot instantiate the type HttpClient,

    google 了下,在stackoverflow上面说是应该

    HttpClient httpclient = new DefaultHttpClient();

    这样写,不过得先import org.apache.http.impl.client.DefaultHttpClient;

    试了一下。。。果然可以,但是后面的GetMethod啥的都有,

    最后才特么发现从4.×版本后,它的用法就变了不能这么使用了

    给个官网示例看看就知道咋回事了

    package spider;
    
    import java.io.IOException;
    
    import org.apache.http.HttpEntity;
    import org.apache.http.HttpResponse;
    import org.apache.http.client.ClientProtocolException;
    import org.apache.http.client.ResponseHandler;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.impl.client.CloseableHttpClient;
    import org.apache.http.impl.client.HttpClients;
    import org.apache.http.util.EntityUtils;
    
    public class Spider {
        public static void main(String[] args) throws Exception{
            CloseableHttpClient httpclient = HttpClients.createDefault();
            try{
                String url = "http://www.baidu.com";
                HttpGet httpGet = new HttpGet(url);
                System.out.println("executing request " + httpGet.getURI());
                
                ResponseHandler<String> responseHandler = new ResponseHandler<String>(){
                    public String handleResponse(final HttpResponse response) throws ClientProtocolException,IOException{
                        int status = response.getStatusLine().getStatusCode();
                        if (status >= 200 && status < 300){
                            HttpEntity entity = response.getEntity();
                            return entity !=null ? EntityUtils.toString(entity) : null;
                        }else{
                            throw new ClientProtocolException("Unexpected response status: " + status);
                        }
                    }
                };
                String responseBody = httpclient.execute(httpGet,responseHandler);
                System.out.println("-------------------------------------------");
                System.out.println(responseBody);
                System.out.println("-------------------------------------------");
            }finally{
                httpclient.close();
            }
        }
    }
  • 相关阅读:
    SQL手工注入方法
    Python + Django 网站平台搭建之- 初识 (一)
    最新版Idea2019.3.4/2020.1完美破解
    使用 Guns 自动生成 SpringBoot + LayUI 的后台管理系统
    SpringBoot+Layui后台管理系统
    国内Maven中央仓库推荐 速度最快最好的Maven仓
    git 下载失败 中断了 继续下 怎么配置参数
    mysql 创建与授权
    jboot-admin
    自动生文器
  • 原文地址:https://www.cnblogs.com/scrat/p/3456731.html
Copyright © 2011-2022 走看看