本文主要是介绍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();}}
}
这篇关于Cannot instantiate the type HttpClient问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!