最近在学习安卓并用thinkphp做后台,为了抵抗自己的烂记性,就在这里记录一下当我从tp后台获取到json串传到安卓客户端所用到的一个方法函数。

EntityUtils对象是org.apache.http.util下的一个工具类,用官方的解释是为HttpEntity对象提供的静态帮助类,其常用的几个方法如下:

consume()方法;

consumeQuietly(HttpEntity)方法

toByteArray(final HttpEntity entity)方法

最主要的就是consume()这个方法,其功能就是关闭HttpEntity是的流,如果手动关闭了InputStream instream = entity.getContent();这个流,也可以不调用这个方法。看看了其源码就知道了:

 
 

而我在项目中用到的是

String data = EntityUtils.toString(response.getEntity());

我会在下一篇文章中把tp和安卓客户端的数据交互代码粘出来

package com.scl.base;

import java.io.IOException;

import java.io.UnsupportedEncodingException;

import org.apache.http.HttpEntity;

import org.apache.http.ParseException;

import org.apache.http.entity.StringEntity;

import org.apache.http.util.EntityUtils;

public class HttpClientDemo06 {

/**

* @param args

*/

public static void main(String[] args) {

try {

HttpEntityentity=newStringEntity("这一个字符串实体", "UTF-8");

//内容类型

System.out.println(entity.getContentType());

//内容的编码格式

System.out.println(entity.getContentEncoding());

//内容的长度

System.out.println(entity.getContentLength());

//把内容转成字符串

System.out.println(EntityUtils.toString(entity));

//内容转成字节数组

System.out.println(EntityUtils.toByteArray(entity).length);

//还有个直接获得流

//entity.getContent();

} catch (UnsupportedEncodingException e) {

throw new RuntimeException(e);

} catch (ParseException e) {

} catch (IOException e) {

}

}

}

对于实体的资源使用完之后要适当的回收资源,特别是对于流实体:例子代码如下

public static void test() throws IllegalStateException, IOException{

HttpResponseresponse=null;

HttpEntityentity=response.getEntity();

if(entity!=null){

InputStreamis=entity.getContent();

try{

//做一些操作

}finally{

//最后别忘了关闭应该关闭的资源,适当的释放资源

if(is != null){

is.close();

}

//这个方法也可以把底层的流给关闭了

EntityUtils.consume(entity);

//下面是这方法的源码

/*public static void consume(final HttpEntity entity) throws IOException {

if (entity== null) {

return;

}

if (entity.isStreaming()) {

InputStreaminstream=entity.getContent();

if (instream != null) {

instream.close();

}

}

}*/

}

}

HttpClient之EntityUtils对象的更多相关文章

  1. HttpClient之EntityUtils工具类

    今天看到tttpclient-tutorial上面有这样一句话-----非常的不推荐使用EntityUtils,除非知道Entity是来自可信任的Http Server 而且还需要知道它的最大长度.文 ...

  2. HTTP访问的两种方式(HttpClient+HttpURLConnection)整合汇总对比(转)

    在Android上http 操作类有两种,分别是HttpClient和HttpURLConnection,其中两个类的详细介绍可以问度娘. HttpClient: HttpClient是Apache ...

  3. Android系列之网络(一)----使用HttpClient发送HTTP请求(通过get方法获取数据)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  4. HTTP访问的两种方式(HttpClient+HttpURLConnection)整合汇总对比

    HttpClient: HttpClient是Apache Jakarta Common下的子项目,用来提供高效的.最新的.功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版 ...

  5. android 请求网络 和 httpclient的使用上传下载

    访问网络最主要的也就是 http协议了. http协议很简单,但是很重要. 直接上代码了,里面都是1个代码块 代码块的,用哪一部分直接拷出去用就好了. 1.访问网络用 get 和 post  自己组拼 ...

  6. (一)----使用HttpClient发送HTTP请求(通过get方法获取数据)

    (一)----使用HttpClient发送HTTP请求(通过get方法获取数据) 一.HTTP协议初探: HTTP(Hypertext Transfer Protocol)中文 “超文本传输协议”,是 ...

  7. Java HttpClient伪造请求之简易封装满足HTTP以及HTTPS请求

    HttpClient简介 HTTP 协议可能是现在 Internet 上使用得最多.最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源.虽然在 JDK 的 jav ...

  8. HTTP基础与Android之(安卓与服务器通信)——使用HttpClient和HttpURLConnection

    查看原文:http://blog.csdn.net/sinat_29912455/article/details/51122286 1客户端连接服务器实现内部的原理 GET方式和POST方式的差别 H ...

  9. Httpclient 支持https(转)

    参考:https://jingyan.baidu.com/article/154b46317353d228ca8f4112.html 参考:https://www.jianshu.com/p/a444 ...

随机推荐

  1. [PHP-DI] 理解依赖注入

    理解依赖注入 依赖注入 和 依赖注入容器 是不同的: 依赖注入 (Dependency injection) 是编写更好代码的一种方法 容器 (Container) 是帮助注入依赖关系的工具 你不需要 ...

  2. ios8.1.1系统怎么取消下划线

    http://zhidao.baidu.com/link?url=y-3oAiOsuCSvoCD-7H2Uvgl_UI1BQQuNvA2jHKCRAGmZSH7_RrwDijKtRouMBa5yF_L ...

  3. openStack queens

  4. MySQL把文件导入表中

    1. Mysql 把本地文件导入表中 drop table if exists wufangzhai_caigou_group; create table wufangzhai_caigou_grou ...

  5. Centos7 搭建Gitlab服务器并配置项目全过程

    https://blog.csdn.net/Abysscarry/article/details/79402695 gitlab与jenkins整合搭建      https://blog.csdn. ...

  6. django之relacted.py(探秘django的关联field)

    生成model类对象时,传入的每个field对象都会调用其contribute_to_class函数,生成对应的属性. def contribute_to_class(self, cls, name, ...

  7. Redis 五大数据类型及常用操作

    # 更详细的操作命令请查看 => http://redisdoc.com/ 1: KEY ( 键值 )  => 常见操作 2: String ( 字符串 ), 最大支持 512M 2.1: ...

  8. Linux 下 Bash配置文件读取

    Linux安装时可能要修改的配置文件:/etc/profile./etc/bashrc(ubuntu没有这个文件,对应地,其有/etc/bash.bashrc文件.我用的是ubuntu系统,所以下面将 ...

  9. 浅谈JSONObject与JSONArray的区别

    例如:一个json字符串如下: { "type":[{"a","1"},{"a","2"},{&qu ...

  10. DLL创建与调用(C#调用C++的DLL)

    1.C++中需要导出的函数,函数定义处在返回值前加上:extern "C" __declspec(dllexport) C#调用:[DllImport("导出函数所在DL ...