HttpClient4入门应用----抓取网站内容(解决中文乱码)

本文介绍了HttpClient的基本概念及使用方法,包括如何通过HttpClient模拟HTTP请求并获取服务器响应。此外还提供了一个简单的示例,展示如何使用HttpClient抓取网页内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最早知道HttpClient是和以前公司同事聊到一家公司的面试题,说是怎么判断一个网站运行是否正常,当时都不知道从哪方面下手。后来那同事说是用HttpClient,可以抓取到网站的HTMl代码,借此可以判断网站运行情况。在这里,我暂时还不知道是不是通过这个方法可以判断网站运行情况,但是真正让我学习HttpClient,却是进了现在这家公司,需要用它对自己写的Struts2里的Action进行测试。

对我来说,现在的理解就是HttpClient可以通过url模拟Http的请求,获得服务端的响应,并可以将响应的内容打印到控制台。至于官方的解释,以下是百科的。

HTTP协议可能是现在Internet上使用得最多、最重要的协议了,越来越多的Java应用程序需要直接通过HTTP协议来访问网络资源。虽然在JDK的java net包中已经提供了访问HTTP协议的基本功能,但是对于大部分应用程序来说,JDK库本身提供的功能还不够丰富和灵活。HttpClient是Apache Jakarta Common下的子项目,用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版本和建议。HttpClient已经应用在很多的项目中,比如Apache Jakarta上很著名的另外两个开源项目Cactus和HTMLUnit都使用了HttpClient。现在HttpClient最新版本为HttpClient 4.1.

几个主要类介绍:

1.HttpClient

HttpClient代表了一个http的客户端,HttpClient接口定义了大多数基本的http请求执行行为.

2.HttpEntity

entity是发送或者接收消息的载体。entities可以通过request和response获取到.

3.HttpConnection

HttpConnection代表了一个http连接。

例子:

通过HttpClient抓取百度主页的内容。

//创建默认的httpClient实例

Java代码 收藏代码
  1. HttpClienthttpClient=newDefaultHttpClient();
  2. try{
  3. //创建HttpGet
  4. HttpGethttpGet=newHttpGet("http://www.ifeng.com");
  5. System.err.println("executingrequest"+httpGet.getURI());
  6. //执行get请求
  7. HttpResponseresponse=httpClient.execute(httpGet);
  8. //获取响应实体
  9. HttpEntityentity=response.getEntity();
  10. System.err
  11. .println("======================================================");
  12. //打印响应状态
  13. System.out.println(response.getStatusLine());
  14. if(entity!=null){
  15. //打印响应内容的长度
  16. System.out.println("Responsecontentlenght:"
  17. +entity.getContentLength());
  18. Stringcontent=EntityUtils.toString(entity);
  19. //解决HttpClient获取中文乱码,用String对象进行转码
  20. System.out.println("Responsecontent:"
  21. +newString(content.getBytes("ISO-8859-1"),"UTF-8"));
  22. }
  23. System.err
  24. .println("==========================================================");
  25. }catch(Exceptione){
  26. //TODO:handleexception
  27. }finally{
  28. //关闭连接,释放资源
  29. httpClient.getConnectionManager().shutdown();
  30. }

输出内容

Java代码 收藏代码
  1. executingrequesthttp://www.baidu.com/
  2. ----------------------------------------
  3. HTTP/1.1200OK
  4. Responsecontentlength:6759
  5. Responsecontent:<!doctypehtml><html><head><metahttp-equiv="Content-Type"content="text/html;charset=gb2312"><title>百度一下,你就知道</title>…(此处省略打印信息)
  6. -----------------------------------------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值