首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >HttpEntity接口的详细解释与应用「建议收藏」

HttpEntity接口的详细解释与应用「建议收藏」

作者头像
全栈程序员站长
发布2022-08-01 15:13:49
发布2022-08-01 15:13:49
4.3K0
举报

大家好,又见面了,我是你们的朋友全栈君。

爬虫之对接口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帮助文档。

后记

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

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/125944.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年4月1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档