httpClient实例--返回响应部分并且转换成对象
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import com.alibaba.fastjson.JSONObject;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonObject;
import com.google.gson.reflect.TypeToken;
/**
* httpClient
* 利用apache提供的httpClient工具类,访问接口并返回response的body部分
* 并转换成对象
* */
public class StreamTest {
private static final Gson gson = new GsonBuilder().disableHtmlEscaping().create();
public static void main(String[] args) {
HttpPost httpPost = new HttpPost("http://10.254.60.22:8002" + "/decision/apply/queryRejectReason");
//String address = "http://10.254.60.22:8002" + "/decision/apply/queryRejectReason";
//httpPost.setConfig(RequestConfig.custom().setConnectionRequestTimeout(212).setConnectTimeout(112).build());
//UrlEncodedFormEntity entity = new UrlEncodedFormEntity(params,"utf-8");
String str = "{\"identityNo\":372925198904086927}";
//StringEntity entity = new StringEntity(str,"UTF-8");
Map<String, Object> paramMap = new HashMap<String, Object>();
paramMap.put("identityNo", "372925198904086927");
String jsonContent = GsonUtils.toJson(paramMap);
StringEntity entity = new StringEntity(jsonContent, "UTF-8");
entity.setContentType("application/json");//必须设置成json
HttpClient httpClient = new DefaultHttpClient();
httpPost.setEntity(entity);
HttpResponse response = null;
try {
response = httpClient.execute(httpPost);
} catch (IOException e) {
if (httpPost != null) {
httpPost.releaseConnection();
}
}
//String response = HttpClientUtils.getMethodPostResponse(address,entity);
InputStream inputStream = null;
try {
inputStream = response.getEntity().getContent();
} catch (UnsupportedOperationException | IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ByteArrayOutputStream out = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = 0;
try {
while ((len = inputStream.read(buffer)) != -1) {
out.write(buffer, 0, len);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
out.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
byte[] ss = out.toByteArray();
String result=null;
try {
result = new String(ss, "utf-8");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//打印结果:{"status":"1","msg":"获取成功","data":[{"id":91413,"idNo":"372925198904086927","prod":"CCL","dcsnTime":1479913104000,"dcsnRslt":"拒绝","rejRsn":"手机使用期限不足/月","custId":166635,"updTime":1479934476000},{"id":91414,"idNo":"372925198904086927","prod":"CCL","dcsnTime":1478800405000,"dcsnRslt":"拒绝","rejRsn":"卡龄不足且评分低","custId":167129,"updTime":1479934476000},{"id":91415,"idNo":"372925198904086927","prod":"CCL","dcsnTime":1478800405000,"dcsnRslt":"拒绝","rejRsn":"社保或公积金缴金月数不符合要求","custId":167129,"updTime":1479934476000}]}
System.out.println(result);
JSONObject json = JSONObject.parseObject(result);
String msg = json.getString("msg");
String status = json.getString("status");
String data = json.getString("data");
//System.out.println(data);
Response response1 = null;
if("[]".equals(data) || "".equals(data) || data == null){
response1 = new Response(status, msg, null);
}else{
List<DDHRejectReasonEntity> res = (List<DDHRejectReasonEntity>) GsonUtils.convertList(data, DDHRejectReasonEntity.class);
response1 = new Response(status, msg, res);
//response = GsonUtils.convertObj(respJson, Response.class);
}
}
}
/**
* 需要转换的对象
* */
class DDHRejectReasonEntity {
private Integer id; //主键
private String idNo; // 身份证号
private String prod; // 产品
private Date dcsnTime; // 决策时间
private String dcsnRslt; // 决策结果
private String rejRsn; // 拒绝原因
private Integer custId; // 客户ID
private Date updTime; // 更新时间
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getIdNo() {
return idNo;
}
public void setIdNo(String idNo) {
this.idNo = idNo;
}
public String getProd() {
return prod;
}
public void setProd(String prod) {
this.prod = prod;
}
public Date getDcsnTime() {
return dcsnTime;
}
public void setDcsnTime(Date dcsnTime) {
this.dcsnTime = dcsnTime;
}
public String getDcsnRslt() {
return dcsnRslt;
}
public void setDcsnRslt(String dcsnRslt) {
this.dcsnRslt = dcsnRslt;
}
public String getRejRsn() {
return rejRsn;
}
public void setRejRsn(String rejRsn) {
this.rejRsn = rejRsn;
}
public int getCustId() {
return custId;
}
public void setCustId(Integer custId) {
this.custId = custId;
}
public Date getUpdTime() {
return updTime;
}
public void setUpdTime(Date updTime) {
this.updTime = updTime;
}
}
class Response {
private String status;
private String msg;
private Object data;
public Response(String status, String msg, Object data) {
super();
this.status = status;
this.msg = msg;
this.data = data;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
/**
* 获取数据成功
* **/
public static Response successResponse(Object data) {
return new Response(BaseConstants.CommonCode.SUCCESS_CODE, BaseConstants.CommonMessage.SUCCESS_MESSAGE, data);
}
public static Response successResponse() {
return new Response(BaseConstants.CommonCode.SUCCESS_CODE, BaseConstants.CommonMessage.SUCCESS_MESSAGE, "");
}
public static Response response(String status, String msg, Object data) {
return new Response(status, msg, data);
}
public static Response response(String status) {
return new Response(status, "", "");
}
public static Response response(String status, String msg) {
return new Response(status, msg, "");
}
public static Response fail(String msg) {
return new Response(BaseConstants.CommonCode.FAILED_CODE, msg, "");
}
public static Response success(String msg) {
return new Response(BaseConstants.CommonCode.SUCCESS_CODE, msg, "");
}
public static Response fail(String msg, Object data) {
return new Response(BaseConstants.CommonCode.FAILED_CODE, msg, data);
}
public static Response success(String msg, Object data) {
return new Response(BaseConstants.CommonCode.SUCCESS_CODE, msg, data);
}
}
class GsonUtils {
private static final Gson gson = new GsonBuilder().disableHtmlEscaping().create();
public static String toJson(Object obj) {
if (obj == null) {
return "";
}
return gson.toJson(obj);
}
public static <T> List<T> convertList(String json, Class<T> cls) {
if (StringUtils.isBlank(json)) {
return new ArrayList<T>();
}
Type type = new TypeToken<List<JsonObject>>() {
}.getType();
List<JsonObject> jsonObjs = gson.fromJson(json, type);
List<T> listOfT = new ArrayList<>();
for (JsonObject jsonObj : jsonObjs) {
listOfT.add(convertObj(jsonObj.toString(), cls));
}
return listOfT;
}
public static <T> T convertObj(String json, Class<T> cls) {
if (StringUtils.isBlank(json)) {
return null;
}
return gson.fromJson(json, cls);
}
}
class BaseConstants {
//通用的状态码
public abstract class CommonCode {
public static final String FAILED_CODE = "0"; //获取数据失败状态码
public static final String SUCCESS_CODE = "1"; //获取数据成功状态码
}
//通用的消息
public abstract class CommonMessage {
public static final String FAILED_MESSAGE = "获取数据失败!"; //获取数据失败
public static final String SUCCESS_MESSAGE = "请求数据成功!"; //获取数据失败
public static final String ERROR_MESSAGE = "请求数据出错!!";
}
}
httpClient实例--返回响应部分并且转换成对象的更多相关文章
- json字符串转换成对象需要注意的问题
json转换成对象的时候应该尽量避免出现特殊的符号,如“\”这样的字符在转义成数组的时候会被去除掉,最好的例子就是后台返回的内容为存储路径的JSON,这时候最好是把一个斜杠变为两个斜杠,如: [{&q ...
- 生成二维码 加密解密类 TABLE转换成实体、TABLE转换成实体集合(可转换成对象和值类型) COOKIE帮助类 数据类型转换 截取字符串 根据IP获取地点 生成随机字符 UNIX时间转换为DATETIME\DATETIME转换为UNIXTIME 是否包含中文 生成秘钥方式之一 计算某一年 某一周 的起始时间和结束时间
生成二维码 /// <summary>/// 生成二维码/// </summary>public static class QRcodeUtils{private static ...
- json转换成对象
在json转换成对象时,json的key会与java 类的字段一一对应.如果没有映射上的java字段会在该数据类型上填充默认值,如int 0,String null 等. 没有映射的json key在 ...
- 在一般处理程序中,把Form Post过来的表单集合转换成对象 ,仿 MVC post,反射原理
using System; using System.Collections.Generic; using System.Collections.Specialized; using System.L ...
- json 字符串转换成对象,对象转换成json字符串
json 字符串转换成对象,对象转换成json字符串 前端: 方法一: parseJSON方法: [注意jquery版本问题] var str = '{"name":&qu ...
- Table转换成实体、Table转换成实体集合(可转换成对象和值类型)
/// <summary> /// Table转换成实体 /// </summary> /// <typeparam name="T">< ...
- request请求转换成对象。
1)前端post数据过来,key和val键值对会有很多,这个时候往后端进行插值的时候,最好将这些键值对转换成对象进行处理. 使用common-beanutils 来将前端传递过来的map直接转换成对象 ...
- JSON字符串转换成对象时候 需要有默认构造器 因为这是通过反射创建的 反射是先通过默认构造器创建对象的
JSON字符串转换成对象时候 需要有默认构造器 因为这是通过反射创建的 反射是先通过默认构造器创建对象的
- Js将字符串转换成对象或数组en
举个例子 var test='{ colkey: "col", colsinfo: "NameList" }' a.将文本转换成对象 var test='{ c ...
随机推荐
- virltualbox 升级之后 苹果虚拟机报The installed support driver doesn't match the version of the user解决方案
1.反安装virtualbox后,不要重启 2.删除virtualbox的安装目录 3.进入%userprofile% 目录 (比如: C:\users\me) 删除 .VirtualBox Virt ...
- 使用pyenv安装多个Python版本
pyenv是一个便于使用多版本Python环境的工具 pyenv使用shell脚本编写的,只需要下载就可以使用了,不需要root用户,这个我比较喜欢. 具体介绍看网址:https://github.c ...
- java包名命名规范[【转】
indi : 个体项目,指个人发起,但非自己独自完成的项目,可公开或私有项目,copyright主要属于发起者. 包名为“indi.发起者名.项目名.模块名.……”. pers : 个人项目,指个人发 ...
- sed 替换多个空格为一个
sed -i 's/[ ][ ]*/ /g' file.txt
- android学习十二(android的Content Provider(内容提供器)的使用)
文件存储和SharePreference存储以及数据存储一般为了安全,最好用于当前应用程序中訪问和存储数据.内容提供器(Content Provider)主要用于在不同的应用程序之间实现数据共享的功能 ...
- 通过__block的作用深入研究block
block普通引用 默认情况下,在block中访问外部变量是通过复制一个变量来操作的,既可以读,但是写操作不对原变量生效,下面通过代码来举证 NSString *a = @"testa&qu ...
- Mongodb系列- CRUD操作介绍
---恢复内容开始--- 一 Create 操作 在MongoDB中,插入操作的目标是一个集合. MongoDB中的所有写入操作在单个文档的层次上都是原子的. For examples, see In ...
- fastcgi php-cgi与php-fpm区别和之间的关系
关于FastCGI.php-cgi.php-fpm的区别是什么,各自有什么用途,以及相互间的关系是什么,查阅相关资料,可谓是众说纷纭,莫衷一是: 说法一:fastcgi是一个协议,php-fpm实现了 ...
- [k8s]Docker 用户使用 kubectl 命令指南-unkown排错(kubelet端口解析)
参考:https://kubernetes.io/docs/user-guide/kubectl-cheatsheet/ https://k8smeetup.github.io/docs/user-g ...
- atom汉化
Atom 是 Github 专门为程序员推出的一个跨平台文本编辑器. 推荐一下 Atom官方网站https://atom.io/ GitHub 以后肯定会通过官方模块把 Atom 和 GitHub 进 ...