最近在学习安卓并用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. Redis实现分布式锁原理与实现分析

    一.关于分布式锁 关于分布式锁,可能绝大部分人都会或多或少涉及到. 我举二个例子: 场景一:从前端界面发起一笔支付请求,如果前端没有做防重处理,那么可能在某一个时刻会有二笔一样的单子同时到达系统后台. ...

  2. 阿里云SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution

    如果是阿里云的服务器 SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Temporary failure in ...

  3. py库: django (web框架)

    http://www.imooc.com/learn/736 Python-走进Requests库 http://www.imooc.com/learn/790 django入门与实践 http:// ...

  4. Linux系统Oracle启动、关闭

    Linux系统启动Oracle命令 su - oracle sqlplus /nolog conn / as sysdba startup exit lsnrctl start exit Linux系 ...

  5. Maven私服仓库类型

    1. 代理仓库(Proxy Repository) 顾名思义是代理第三方仓库的,如: maven-central nuget.org-proxy 版本策略(Version Policy): Relea ...

  6. hadoop distcp 命令& 不同hadoop 版本cp

    # 1 版本相同 hadoop distcp -m 10 -bandwidth 150 hdfs://ns1/user/hive/warehouse/public.db/public_oi_fact ...

  7. Python基础7 面向对象编程进阶

    本节内容: 面向对象高级语法部分 经典类vs新式类 静态方法.类方法.属性方法 类的特殊方法 反射 异常处理 Socket开发基础 作业:开发一个支持多用户在线的FTP程序 面向对象高级语法部分 经典 ...

  8. 白鹭引擎 - 本地坐标和舞台坐标的转化 ( globalToLocal, localToGlobal )

    class Main extends egret.DisplayObjectContainer { /** * Main 类构造器, 初始化的时候自动执行, ( 子类的构造函数必须调用父类的构造函数 ...

  9. ThinkCentre进入BIOS,设置intel virtualization technology

    VMware安装提示cpu虚拟化intel virtualization technology ThinkCentre重启长按F1 按enter,开启intel virtualization tech ...

  10. Mysql 获取表属性

    获取表字段信息: select column_name from information_schema.COLUMNS where table_name='表名' nformation_schema. ...