最近在写使用java后端去请求第三方接口的代码,给大家分享关于HttpEntity类的处理方式,而处理请求是需要根据第三方的要求来处理的,所以这里着重展示HttpEntity的处理。

  在开始代码前,需要知晓几个前提:

  1. 第三方接口已经开放,并且已经获得使用的权限
  2. 应经拿到接口的数据,包括需要传入的参数和返回值

  首先展示我这个文档需要用到的接口参数和返回值,我将用这个接口来进行演示


  然后需要导入几个jar包,这里我只做简单的演示,没涉及到具体的功能,所以需要的jar包不多

        <!-- 阿里的json工具包 --><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.68</version></dependency><!-- http请求工具 --><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.12</version></dependency><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpcore</artifactId><version>4.4.13</version></dependency>

  其次,根据返回值构建DTO实体类,这个实体类的结构必须按照返回值来构建,否则在转换时会失败

import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;@Data
@NoArgsConstructor
@ApiModel(value = "商品")
public class ProductDto {private Integer id;private String name;private String logo;private Discount discount;private BigDecimal price;private BigDecimal mallPrice;private BigDecimal discountPrice;private BigDecimal salesVolume;
}@Data
class Discount {private Integer type;private BigDecimal value;
}

  然后进行请求,并对返回值进行解析,已在代码中进行注释,注意,请求方式第三方如果给了用例,最好参考用例进行请求,对返回值的解析可以使用以下方法

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.dyh.peachsys.dto.ProductDto;
import io.swagger.annotations.Api;
import org.apache.http.HttpEntity;
import org.apache.http.HttpStatus;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;import java.io.IOException;
import java.util.ArrayList;
import java.util.List;@Api(tags = "网络请求工具包")
public class HttpRequest {public static JSONArray httpRequest() {CloseableHttpClient httpClient = HttpClientBuilder.create().build();HttpGet httpGet = new HttpGet(RequestCommon.url);CloseableHttpResponse response = null;try {response = httpClient.execute(httpGet);//执行请求if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {//请求成功执行HttpEntity entity = response.getEntity();//获取返回的数据String s = EntityUtils.toString(entity);//转换成字符串JSONObject datas = JSONObject.parseObject(s);//转换成JSON格式Integer status = (Integer) datas.get("status");//获取返回数据状态,get获取的字段需要根据提供的返回值去获取if (status == 200) {//返回的状态JSONObject data = JSONObject.parseObject(datas.get("data").toString());//"data"是根据返回值设定JSONObject jo = JSONObject.parseObject(data.toJSONString());JSONArray records = JSONObject.parseArray(jo.get("records").toString());//"records"是根据返回值设定return records;//返回的数据就是我需要去解析的}}} catch (IOException e) {e.printStackTrace();}return null;}public static void getData() {JSONArray datas = httpRequest();//调用方法,回去"data"里面的数据List<ProductDto> products = new ArrayList<>();//创建dto对象,这个对象的结构来自于返回值if (!datas.isEmpty()) {//如果返回的数据不为空products = JSONArray.parseArray(datas.toJSONString(), ProductDto.class);//转换成对象}//输出测试products.forEach(product -> System.out.println(product));}
}

给大家我的git源码,有兴趣的小伙伴可以看看具体的实现(一直在更新中)
git地址:https://github.com/peach-tec/peachsys

java后端请求第三方接口并处理HttpEntity类转换成实体类对象相关推荐

  1. Java中怎样将Json字符串转换成实体类

    场景 在Java中调用接口获取Json数据后,怎样转换成对应的实体类进行接受与存储. 实现 打开浏览器输入在线Json格式化,这里推荐使用: http://www.bejson.com/ 选择Json ...

  2. java后台请求第三方接口,写入中文参数时失败“message“:“Invalid UTF-8 start byte 0x84\n at XXXXXXXXX

    RT调用第三方接口时,参数有些要传入中文,在connection.setRequestProperty("Content-Type", "application/json ...

  3. java object 转实体类_JAVA怎么把object怎么转换成实体类

    2 第二步调:编写测试代码-利用net.sf.json.JSONObject进行转换. 2.1.起首成立一个实体类Student set和get本身生当作 public class Student { ...

  4. java将Object对象转换成实体类对象

    ObjectMapper objectMapper=new ObjectMapper(); CirclePropertiesVo circlePropertiesVo=objectMapper.con ...

  5. java 类转换_java实体类转换有没有更优雅的方式?

    属性少的话,直接set即可. 如果属性多的话,可以考虑使用Apache中的Bean工具包,主要使用 BeanUtils.copyProperties(Object dest,Object orig) ...

  6. java如何调用第三方接口

    最近在做一个项目,因一些机制问题,需要我用java代码调用第三方接口.因其接口使用的是@RequestBody注入访问对象的,@RequestBody接受收的是一个json格式的字符串,一定是一个字符 ...

  7. 使用RestTemplate请求第三方接口出错,没抛出异常?

    RestTemplate请求第三方接口的时候,请求失败或者没有成功,没有抛异常出来,自己在catch中打印的日志也看不到.下面直接看代码吧,直接拿去可以用的.抛异常的时候可以换一种异常试试,比如Res ...

  8. html小Demo: js调用java后端提供的接口

    文章目录 html小Demo: js调用java后端提供的接口 html常用的一些标签(初级版)以及对html的一些理解的笔记 head常用标签 body常用标签 JavaScript Java sp ...

  9. 一个java的DES加解密类转换成C#

    原文:一个java的DES加解密类转换成C# 一个java的des加密解密代码如下: //package com.visionsky.util;import java.security.*; //im ...

最新文章

  1. 质数筛(洛谷P5736题题解,Java语言描述)
  2. 飞鸽传书的这一新的通信方式采用云技术
  3. 身为数据科学家怎么能不掌握这四大技能!
  4. Cracking the Coding Interview 6.5
  5. mac终端命令大全介绍
  6. spotify电脑下载歌曲_Spotify Music Converter
  7. 如何在软件UI设计中运用格式塔心理学5项法则?
  8. Ardunio开发实例-BME280传感器
  9. 即时聊天系统(IM)发送文件语音视频的两种方式比较
  10. [附源码]Python计算机毕业设计调查问卷及调查数据统计系统Django(程序+LW)
  11. 收藏!用Python一键批量将任意结构的CSV文件导入MySQL数据库。
  12. Android Audio 架构分析
  13. 计算机专业买哪一款华硕电脑好,华硕电脑哪款好
  14. 用于实时大数据处理的Lambda架构
  15. Linux 安装 JDK + Tomcat + Mysql
  16. 【DPDK】dpdk样例源码解析之二:dpdk-helloworld
  17. 解决No module named numpy问题
  18. 添加验证网站之CNAME验证操作-百度搜索资源平台
  19. QGC地面站小白安装与简单实用
  20. 鉴源论坛 · 观辙丨基于规则的车载网络入侵检测技术

热门文章

  1. 乌合之众—131不同群体的分类及其特点
  2. 拾光匣子小程序描述以及功能
  3. 简明Python教程(面向对象)
  4. 十二星座2009年度运势预测
  5. 基于A股供应链网络的股票收益分析
  6. web前端期末大作业(月饼美食网站) html+css+javascript网页设计实例 企业网站制作
  7. Python set 的pop()方法 返回元素并不随机
  8. 实现Trie树(C++)
  9. Android 如何屏蔽联通服务信息WAP通知信息http://g.iuni.com.cn, 百度无耻不让发贴批拼联通
  10. “未来杯”第二届知识图谱锦标赛小组赛结果及16强总决赛名单公布