`

HttpClient4.3学习之EntityUtils对象

阅读更多

        最近使用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);
    }
}

 

1
0
分享到:
评论

相关推荐

    httpClient4.3 Jar包 demo

    在这个"httpClient4.3 Jar包 demo"中,你将找到HttpClient 4.3的jar文件以及相关的示例代码,对于学习和理解HttpClient的使用非常有帮助。 HttpClient 4.3主要知识点包括: 1. **基础概念**: - **HttpClient对象...

    httpclient-4.3.jar

    《Apache HttpClient 4.3详解》 Apache HttpClient是一款开源的Java库,专为执行HTTP请求而设计,广泛应用于各类Web服务的开发中。其版本4.3是该库的一个重要迭代,提供了诸多改进和新特性,旨在提升性能、稳定性和...

    httpclient4.3所需jar包

    本知识点将详细介绍HTTPClient 4.3在爬虫开发中的应用及其主要组件。 一、HTTPClient 4.3的安装与引入 在Java项目中使用HTTPClient 4.3,首先需要下载相关的jar包。提供的"httpclient43"压缩包应包含所有必需的依赖...

    httpClient4.3文档 PDF

    HttpClient是Apache软件基金会的一个开源项目,它为Java程序员提供了一个强大的客户端编程工具包,用于执行...这份中文文档是学习和使用HttpClient的重要参考资料,无论你是初学者还是经验丰富的开发者,都能从中受益。

    HttpClient 4.3教程.rar

    在HttpClient 4.3版本中,这个库进行了许多改进和优化,使其更适用于复杂的网络通信需求。本教程将详细介绍HttpClient 4.3的主要特性和使用方法。 一、HttpClient简介 HttpClient是一个Java库,它允许开发人员执行...

    HttpClient Demo

    HttpClient是Apache基金会开发的一个Java库,用于...你可以从中学习到HttpClient的基本用法和高级特性,并在自己的项目中应用这些知识。通过阅读和运行这些示例,你可以更好地理解HttpClient的工作原理和实际操作流程。

    HttpClient-All-jar-4.3

    这个HttpClient-All-jar-4.3版本是HttpClient的一个重要里程碑,包含了4.3版本的所有功能和修复。下面将详细讨论HttpClient的核心概念、主要功能、配置方法以及常见用法。 HttpClient 4.3版本引入了多项改进和优化...

    httpclient.zip

    - HttpClient 4.3.x:增加了对HTTP/2的支持,优化了连接管理和线程模型。 - HttpClient 4.4.x:对HTTP/2和WebSocket的支持进一步完善,提升了API的易用性。 - HttpClient 4.5.x:修复了一些已知问题,增强了安全...

    Android学习之HttpClient练习(一)

    implementation 'org.apache.httpcomponents:httpclient-android:4.3.5.1' } ``` 如果是在Android 6.0(API级别23)及更高版本,由于HttpClient不再内置于Android框架中,可能需要额外添加支持库: ```groovy ...

    使用HttpClient获取网页html源代码.zip

    implementation 'org.apache.httpcomponents:httpclient-android:4.3.5.1' } ``` 接下来,我们创建一个HttpClient实例,然后构建HttpGet对象来指定要访问的URL。例如,假设我们要获取百度首页的HTML源代码: ```...

    httpclient安卓版

    implementation 'org.apache.httpcomponents:httpclient-android:4.3.5.1' } ``` 这样可以确保HttpClient库在Android项目中可用。 2. 针对性修改:在调试百度IOT SDK时,如果遇到HttpClient的兼容问题,可能需要...

    Android HttpClient Network Lib

    implementation 'org.apache.httpcomponents:httpclient-android:4.3.5.1' } ``` 接下来,我们可以通过以下步骤使用HttpClient发送网络请求: 1. 创建HttpClient实例:`HttpClient httpClient = new ...

    解决HttpClient中文乱码问题jar文件

    8. **使用HttpClientBuilder**:在HttpClient 4.3及以上版本中,推荐使用`HttpClientBuilder`构建HttpClient实例,这样可以更方便地设置各种参数,包括字符编码。 了解并应用以上知识点,可以帮助你有效地解决...

    Http(get)请求数据Android Studio使用HttpClient

    总之,了解如何使用`HttpClient`进行GET请求是Android开发的基础技能,但随着技术的发展,建议学习和使用更现代的网络库,以提升应用的效率和维护性。在实际项目中,务必考虑兼容性和最佳实践,以确保应用程序的稳定...

    Android-HttpClient工具类简单轻松的实现getpostput和delete请求

    implementation 'org.apache.httpcomponents:httpclient-android:4.3.5.1' } ``` 接下来,我们创建一个`HttpClientUtil`工具类,该类将封装所有HTTP请求方法。首先,初始化`HttpClient`对象和`HttpGet`、`...

    android httpclient 访问服务器 获取json数据

    在Android开发中,HTTPClient是常用的网络通信库之一,用于与服务器进行交互,获取或发送数据。本示例主要讲解如何使用HTTPClient访问服务器并获取JSON格式的数据。JSON(JavaScript Object Notation)是一种轻量级...

    HttpClient以及获取页面内容应用

    3.调用HttpClient对象的execute(HttpUriRequest request)发送请求,该方法返回一个HttpResponse。 client.executeMethod(method); 5. 调用HttpResponse的getAllHeaders()、getHeaders(String name)等方法可获取...

    httpcore-4.3.2和httpclient-4.3.3.jar

    HTTPClient则是建立在HTTPCore之上的一个更高级别的库,它提供了一套完整的HTTP客户端实现,支持各种HTTP方法(如GET、POST、PUT等)以及复杂的HTTP特性,如Cookie管理、认证、重定向处理等。在4.3.3版本中,...

    安卓使用httpClient实现网络请求并通过cookie维持对话

    implementation 'org.apache.httpcomponents:httpclient-android:4.3.5.1' ``` 2. **创建HttpClient实例** 创建HttpClient实例是使用它的第一步: ```java HttpParams httpParameters = new BasicHttpParams()...

    httpclient工具类

    9. **异步请求**:从`4.3`版本开始,`HttpClient`引入了异步操作的支持,通过`Future&lt;HttpResponse&gt;`可以异步地执行HTTP请求,适合于非阻塞IO模型。 在实际使用中,开发者通常会先创建一个`HttpClient`实例,配置好...

Global site tag (gtag.js) - Google Analytics