最近使用HttpClient4.3开源包,发现了EntityUtils这个对象,EntityUtils对象是org.apache.http.util下的一个工具类,用官方的解释是为HttpEntity对象提供的静态帮助类,其常用的几个方法如下:
consume()方法;
consumeQuietly(HttpEntity)方法
toByteArray(final HttpEntity entity)方法
最主要的就是consume()这个方法,其功能就是关闭HttpEntity是的流,如果手动关闭了InputStream instream = entity.getContent();这个流,也可以不调用这个方法。看看了其源码就知道了:
public final class EntityUtils { private EntityUtils() { } public static void consumeQuietly(final HttpEntity entity) { try { consume(entity); } catch (final IOException ignore) { } } public static void consume(final HttpEntity entity) throws IOException { if (entity == null) { return; } if (entity.isStreaming()) { final InputStream instream = entity.getContent(); if (instream != null) { instream.close(); } } } public static void updateEntity( final HttpResponse response, final HttpEntity entity) throws IOException { Args.notNull(response, "Response"); consume(response.getEntity()); response.setEntity(entity); } public static byte[] toByteArray(final HttpEntity entity) throws IOException { Args.notNull(entity, "Entity"); final InputStream instream = entity.getContent(); if (instream == null) { return null; } try { Args.check(entity.getContentLength() <= Integer.MAX_VALUE, "HTTP entity too large to be buffered in memory"); int i = (int)entity.getContentLength(); if (i < 0) { i = 4096; } final ByteArrayBuffer buffer = new ByteArrayBuffer(i); final byte[] tmp = new byte[4096]; int l; while((l = instream.read(tmp)) != -1) { buffer.append(tmp, 0, l); } return buffer.toByteArray(); } finally { instream.close(); } } @Deprecated public static String getContentCharSet(final HttpEntity entity) throws ParseException { Args.notNull(entity, "Entity"); String charset = null; if (entity.getContentType() != null) { final HeaderElement values[] = entity.getContentType().getElements(); if (values.length > 0) { final NameValuePair param = values[0].getParameterByName("charset"); if (param != null) { charset = param.getValue(); } } } return charset; } @Deprecated public static String getContentMimeType(final HttpEntity entity) throws ParseException { Args.notNull(entity, "Entity"); String mimeType = null; if (entity.getContentType() != null) { final HeaderElement values[] = entity.getContentType().getElements(); if (values.length > 0) { mimeType = values[0].getName(); } } return mimeType; } public static String toString( final HttpEntity entity, final Charset defaultCharset) throws IOException, ParseException { Args.notNull(entity, "Entity"); final InputStream instream = entity.getContent(); if (instream == null) { return null; } try { Args.check(entity.getContentLength() <= Integer.MAX_VALUE, "HTTP entity too large to be buffered in memory"); int i = (int)entity.getContentLength(); if (i < 0) { i = 4096; } Charset charset = null; try { final ContentType contentType = ContentType.get(entity); if (contentType != null) { charset = contentType.getCharset(); } } catch (final UnsupportedCharsetException ex) { throw new UnsupportedEncodingException(ex.getMessage()); } if (charset == null) { charset = defaultCharset; } if (charset == null) { charset = HTTP.DEF_CONTENT_CHARSET; } final Reader reader = new InputStreamReader(instream, charset); final CharArrayBuffer buffer = new CharArrayBuffer(i); final char[] tmp = new char[1024]; int l; while((l = reader.read(tmp)) != -1) { buffer.append(tmp, 0, l); } return buffer.toString(); } finally { instream.close(); } } public static String toString( final HttpEntity entity, final String defaultCharset) throws IOException, ParseException { return toString(entity, defaultCharset != null ? Charset.forName(defaultCharset) : null); } public static String toString(final HttpEntity entity) throws IOException, ParseException { return toString(entity, (Charset)null); } }
相关推荐
在这个"httpClient4.3 Jar包 demo"中,你将找到HttpClient 4.3的jar文件以及相关的示例代码,对于学习和理解HttpClient的使用非常有帮助。 HttpClient 4.3主要知识点包括: 1. **基础概念**: - **HttpClient对象...
《Apache HttpClient 4.3详解》 Apache HttpClient是一款开源的Java库,专为执行HTTP请求而设计,广泛应用于各类Web服务的开发中。其版本4.3是该库的一个重要迭代,提供了诸多改进和新特性,旨在提升性能、稳定性和...
本知识点将详细介绍HTTPClient 4.3在爬虫开发中的应用及其主要组件。 一、HTTPClient 4.3的安装与引入 在Java项目中使用HTTPClient 4.3,首先需要下载相关的jar包。提供的"httpclient43"压缩包应包含所有必需的依赖...
HttpClient是Apache软件基金会的一个开源项目,它为Java程序员提供了一个强大的客户端编程工具包,用于执行...这份中文文档是学习和使用HttpClient的重要参考资料,无论你是初学者还是经验丰富的开发者,都能从中受益。
在HttpClient 4.3版本中,这个库进行了许多改进和优化,使其更适用于复杂的网络通信需求。本教程将详细介绍HttpClient 4.3的主要特性和使用方法。 一、HttpClient简介 HttpClient是一个Java库,它允许开发人员执行...
HttpClient是Apache基金会开发的一个Java库,用于...你可以从中学习到HttpClient的基本用法和高级特性,并在自己的项目中应用这些知识。通过阅读和运行这些示例,你可以更好地理解HttpClient的工作原理和实际操作流程。
这个HttpClient-All-jar-4.3版本是HttpClient的一个重要里程碑,包含了4.3版本的所有功能和修复。下面将详细讨论HttpClient的核心概念、主要功能、配置方法以及常见用法。 HttpClient 4.3版本引入了多项改进和优化...
- HttpClient 4.3.x:增加了对HTTP/2的支持,优化了连接管理和线程模型。 - HttpClient 4.4.x:对HTTP/2和WebSocket的支持进一步完善,提升了API的易用性。 - HttpClient 4.5.x:修复了一些已知问题,增强了安全...
implementation 'org.apache.httpcomponents:httpclient-android:4.3.5.1' } ``` 如果是在Android 6.0(API级别23)及更高版本,由于HttpClient不再内置于Android框架中,可能需要额外添加支持库: ```groovy ...
implementation 'org.apache.httpcomponents:httpclient-android:4.3.5.1' } ``` 接下来,我们创建一个HttpClient实例,然后构建HttpGet对象来指定要访问的URL。例如,假设我们要获取百度首页的HTML源代码: ```...
implementation 'org.apache.httpcomponents:httpclient-android:4.3.5.1' } ``` 这样可以确保HttpClient库在Android项目中可用。 2. 针对性修改:在调试百度IOT SDK时,如果遇到HttpClient的兼容问题,可能需要...
implementation 'org.apache.httpcomponents:httpclient-android:4.3.5.1' } ``` 接下来,我们可以通过以下步骤使用HttpClient发送网络请求: 1. 创建HttpClient实例:`HttpClient httpClient = new ...
8. **使用HttpClientBuilder**:在HttpClient 4.3及以上版本中,推荐使用`HttpClientBuilder`构建HttpClient实例,这样可以更方便地设置各种参数,包括字符编码。 了解并应用以上知识点,可以帮助你有效地解决...
总之,了解如何使用`HttpClient`进行GET请求是Android开发的基础技能,但随着技术的发展,建议学习和使用更现代的网络库,以提升应用的效率和维护性。在实际项目中,务必考虑兼容性和最佳实践,以确保应用程序的稳定...
implementation 'org.apache.httpcomponents:httpclient-android:4.3.5.1' } ``` 接下来,我们创建一个`HttpClientUtil`工具类,该类将封装所有HTTP请求方法。首先,初始化`HttpClient`对象和`HttpGet`、`...
在Android开发中,HTTPClient是常用的网络通信库之一,用于与服务器进行交互,获取或发送数据。本示例主要讲解如何使用HTTPClient访问服务器并获取JSON格式的数据。JSON(JavaScript Object Notation)是一种轻量级...
3.调用HttpClient对象的execute(HttpUriRequest request)发送请求,该方法返回一个HttpResponse。 client.executeMethod(method); 5. 调用HttpResponse的getAllHeaders()、getHeaders(String name)等方法可获取...
HTTPClient则是建立在HTTPCore之上的一个更高级别的库,它提供了一套完整的HTTP客户端实现,支持各种HTTP方法(如GET、POST、PUT等)以及复杂的HTTP特性,如Cookie管理、认证、重定向处理等。在4.3.3版本中,...
implementation 'org.apache.httpcomponents:httpclient-android:4.3.5.1' ``` 2. **创建HttpClient实例** 创建HttpClient实例是使用它的第一步: ```java HttpParams httpParameters = new BasicHttpParams()...
9. **异步请求**:从`4.3`版本开始,`HttpClient`引入了异步操作的支持,通过`Future<HttpResponse>`可以异步地执行HTTP请求,适合于非阻塞IO模型。 在实际使用中,开发者通常会先创建一个`HttpClient`实例,配置好...