爬虫之对接口HttpEntity的解释(二)

前言

之前写了一些关于如何使用HttpClient包基本功能HttpGet与HttpPost。在其中提到了HttpEntity接口。这篇文章是对HttpEntity接口深入的探讨。

一、使用的位置与方式

HttpEntity是在HttpCore包中实现的,下面以HttpGet中使用位置为例(参见上一篇)

DefaultHttpClient httpClient = new DefaultHttpClient();                               (A)

HttpGet httpGet = new HttpGet(url);                                             (B)

HttpResponse httpResponse = httpClient.execute(httpGet);                           (C)

HttpEntity httpEntity = httpResponse.getEntity();                                    (D)

Do something on httpEntity                                                    (E)

EntityUtils.consume(httpEntity)                                                  (F)

httpGet.releaseConnection()

HttpEntity其实相当于一个消息实体,内容是http传送的报文(这里可以说是html,css等等文件)。这里只需要知道它是用来表征一个http报文的实体就行了,用来发送或接收。通过上面的例子,可以对使用HttpEntity有一些认识。实现HttpEntity接口有不同的类,下面介绍。

二、HttpEntity的分类

按HttpEntity内容的来源,它可以分为三类:

1.streamed(流式):从一个流传输中获得,一般是来自http连接。特点:使用时产生,不可重复

2.self-contained(自包含):存储在内存中的,独立于http连接。特点:可以重复

3.wrapping(代理,包装):从其他HttpEntity中获得。特点:依附于获取的类

在HttpEntity帮助文档中建议,将实时性的不可重复的作为流式实体处理,把可重复的(如果不会产生巨大影响)作为自我包含实体处理。

三、HttpEntity的方法介绍

HttpEntity类非常简洁,它的方法如下:

InputStreamgetContent()返回的是一个实体内容的流

注:此时这里的流与上面所说的流式实体概念有所不同。上文所说流式实体是指从连接产生具有实时性的流,而这里仅仅只内容流形式,不要混淆。

HeadergetContentEncoding()获取HttpEntity(如果有的话)实体已编码内容的头部信息(具体Header内容可以参见HttpCore帮助文档中Header类)

Long getContentLength()显而易见是获取整个实体内容的长度

BooleanisRepeatable()判断实体是否具有重现的能力,也就是一中讨论的分类

BooleanisStreaming()判断实体的内容是不是基于流

VoidwriteTo(OutputStream outstream)将实体写入一个输出流

四.实现接口HttpEntity的类

这些实现接口HttpEntity的类,其实就是在HttpEntity功能上添加了一些小小的功能。看这些类的名字就能知道它添加了什么功能。

类如下:

AbstractHttpEntity,BasicHttpEntity,BufferedHttpEntity,ByteArrayEntity,InputStreamEntity,StringEntity等等。如果在接下来的文章中有用到的话,我会提及一部分。其实这些类非常简单,完全可以自己实现。也可以参考HttpCore帮助文档。

后记

我发现自己写的内容都很简单,甚至说是很幼稚。但是,我想如果对一个已经很熟练的人来说,这样的文章也许没用,他也完全不需要去看。但是如果对一个刚刚开始学习的人来说,也许意义会有所不同,他会少走很多弯路。不过,随着学习爬虫不停地深入,我想会写出一些能值得参考的东西来的。所以,不喜勿喷。

HttpEntity接口的详细解释与应用相关推荐

  1. Uart接口的详细解释

    我面试的时候一般喜欢问应聘者一个问题:UART与RS232/RS485的区别与联系?很多人对于这个问题答得都不是很好.还有些人压根就没有想过这个问题,一直认为他们是同一个东西,就是咱们俗称的串口. 我 ...

  2. Python __name__ == ‘__main__’详细解释-Python零基础入门教程

    目录 一.简介 1.__name__ 2.'__main__' 3.__name__ == '__main__' 二.作用 三.猜你喜欢 ​ 零基础 Python 学习路线推荐 : Python 学习 ...

  3. python鸭制作类代码_详细解释ducktyping鸭子类型程序设计与Python的实现

    在程序设计中,鸭子类型(英语:duck typing)是动态类型的一种风格.在这种风格中,一个对象有效的语义,不是由继承自特定的类或实现特定的接口,而是由当前方法和属性的集合决定. 这个概念的名字来源 ...

  4. MTK 驱动 (70)---MTK Projiectconfig.mk文件详细解释

    MTK Projiectconfig.mk文件详细解释 AUTO_ADD_GLOBAL_DEFINE_BY_NAME AUTO_ADD_GLOBAL_DEFINE_BY_VALUE AUTO_ADD_ ...

  5. Spring中IOC和AOP的详细解释(转)

    原文链接:Spring中IOC和AOP的详细解释 我们是在使用Spring框架的过程中,其实就是为了使用IOC,依赖注入,和AOP,面向切面编程,这两个是Spring的灵魂. 主要用到的设计模式有工厂 ...

  6. php.ini配置文件中文详细解释

    php.ini配置文件中文详细解释 ;;;;;;;;;;; ; 警告 ; ;;;;;;;;;;; ; 此配置文件是对于新安装的PHP的默认设置. ;  ; 此配置针对开发目的,并且*不是*针对生产环境 ...

  7. resin配置文件的详细解释

    下面是resin配置文件的详细解释: http://blog.chinaunix.net/uid-25892360-id-3059362.html <!-- - Resin 3.1 配置文件. ...

  8. Android客户端请求服务器端的详细解释(附源代码)

    Android客户端请求服务器端的详细解释 1. Android客户端与服务器端通信方式: Android与服务器通信通常采用HTTP通信方式和Socket通信方式,而HTTP通信方式又分get和po ...

  9. hql 语法与详细解释

    hql 语法与详细解释 2010-08-26 11:50:11 标签: hql  语法  解释  休闲  职场 HQL查询 HQL查询: Criteria查询对查询条件进行了面向对象封装,符合编程人员 ...

最新文章

  1. mariadb转mysql_MariaDB/MySQL备份和恢复(二):数据导入、导出
  2. baidumap api MySQL_百度地图API开发笔记一(基础篇)
  3. 逻辑回归和线性回归的区别_[PRML]线性分类模型贝叶斯逻辑回归
  4. 数据光端机设备性能指标介绍
  5. 执行计划中的参数解释
  6. java getparametermap_重写getParameterMap后,报错 ,
  7. linux 关机命令总结
  8. WebApi单元测试记录
  9. js 经常用到的键盘码
  10. c++如何解决大数组栈内存不够的问题
  11. java 动态加载ztree_JAVAEE——BOS物流项目02:学习计划、动态添加选项卡、ztree、项目底层代码构建...
  12. 爬虫是后端吗_北京市互联网后端职位招聘需求分析
  13. 随手记_PPT设计风格参考
  14. JAVA 实现《俄罗斯方块》游戏|CSDN创作打卡
  15. ipad wifi信号测试软件,iPad3的wifi信号弱 二种方法修复WiFi信号
  16. Oracle --- 表空间
  17. Python 小程序:计算24点
  18. 遮罩层内容半透明解决
  19. cmd命令查看路由器上记录的IP地址与MAC地址(ARP表)
  20. 《咸鱼分享》咸鱼在线TOP

热门文章

  1. CocoaPods安装 2018
  2. 华为董事长:已攻克!
  3. Python基础+数据科学入门(六)类
  4. 【只推荐一位Python大佬】 从程序员到创业者,再到自由职业
  5. Windows操作系统常见安全问题解决方法
  6. jsp中写隐藏td标签_html中隐藏td
  7. linux下使用mysql
  8. 2014年11月19日
  9. UE4 WebUI插件
  10. Bootstrap系列之弹出框(Popovers)