RestTemplate

import org.springframework.web.client.RestTemplate;
import org.springframework.http.HttpEntity;
``
//开放接口
//开放接口地址:https://openapi.lechange.cn/xxx
public class VideoHierarchyTask {@Autowiredprivate RestTemplate restTemplate;@Autowiredprivate SysVideoInfoMapper sysVideoInfoMapper;@Autowiredprivate VideoHierarchyMapper videoHierarchyMapper;@Value("${ctrl.deviceOpenListIp}")private String IP;public void handle(){//清除视频层级List<VideoHierarchy> videoHierarchies = videoHierarchyMapper.selectVideoHierarchyList(new VideoHierarchy());for (VideoHierarchy videoHierarchy : videoHierarchies) {Long parentId = videoHierarchy.getParentId();if (parentId == 1L){videoHierarchyMapper.deleteVideoHierarchyByParentId(parentId);}}//清除视频监控信息List<SysVideoInfo> sysVideoInfos = sysVideoInfoMapper.selectSysVideoInfoList(new SysVideoInfo());for (SysVideoInfo videoInfo : sysVideoInfos) {Long id = videoInfo.getId();sysVideoInfoMapper.deleteSysVideoInfoById(id);}// 获取管理员tokenUserManagerImpl userManager = new UserManagerImpl();HashMap<String, Object> paramsMap = new HashMap<String, Object>();JSONObject json = userManager.accessToken(paramsMap);JSONObject jsonResult = json.getJSONObject("result");JSONObject jsonData = jsonResult.getJSONObject("data");String token = jsonData.getString("accessToken");//请求乐橙云平台的开放接口String url = IP;//设置Http的HeaderHttpHeaders headers = new HttpHeaders();headers.setContentType(MediaType.APPLICATION_JSON_UTF8);//设置开放接口的访问参数Map<String, Object> params = new HashMap<>();params.put("token", token);params.put("bindId",-1);params.put("limit",128);params.put("type","bindAndShare");params.put("needApInfo","true");//HttpSend大华乐橙云提供的类HttpSend httpSend = new HttpSend();Map<String, Object> map = httpSend.paramsInit(params);//普通访问注解设置 参数集合params就可以//设置访问的EntityHttpEntity entity = new HttpEntity<>(map, headers);//发起一个POST请求ResponseEntity<String> exchange = restTemplate.exchange(url, HttpMethod.POST, entity, String.class);//获取响应数据String body = exchange.getBody();String jsons = JSON.toJSONString(body);String parse = (String) JSON.parse(jsons);JsonRootBean deviceLists = JSON.parseObject(parse, JsonRootBean.class);List<DeviceList> deviceList = deviceLists.getResult().getData().getDeviceList();for (DeviceList list : deviceList) {SysVideoInfo sysVideoInfo = new SysVideoInfo();List<Channels> channels = list.getChannels();//设备号String deviceId = list.getDeviceId();for (Channels channel : channels) {VideoHierarchy videoHierarchy = new VideoHierarchy();//视频层级名String channelName = channel.getChannelName();videoHierarchy.setParentId(1L);videoHierarchy.setName(channelName);videoHierarchy.setState("1");//新增视频层级信息videoHierarchyMapper.insertVideoHierarchy(videoHierarchy);//通道idString channelId = channel.getChannelId();//imou://open.lechange.com/deviceId/channelId/type?streamId=1String ip = "imou://open.lechange.com/"+deviceId+"/"+channelId+"/1?streamId=1";sysVideoInfo.setIpAddr(ip);sysVideoInfo.setDeviceNo(deviceId);sysVideoInfo.setField1(channelId);sysVideoInfo.setDeviceName(channelName);}//新增视频监控信息sysVideoInfoMapper.insertSysVideoInfo(sysVideoInfo);}}
//系统间数据交互(到具体的方法):http://127.0.0.1:8083/system/inquiry/add
> 注意:如果方法有权限设置,需放开权限。//主系统 定时器发送请求及参数public class HttpPostTask {@Resourceprivate MaterialDecidedMapper materialDecidedMapper;@Resourceprivate MaterialAcceptanceMapper materialAcceptanceMapper;@Autowiredprivate RestTemplate restTemplate;@Value("${ctrl.transferIp}")private String IP;public void handle() throws Exception {String url = IP;//设置Http的HeaderHttpHeaders headers = new HttpHeaders();headers.setContentType(MediaType.APPLICATION_JSON_UTF8);//设置访问参数MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();MaterialDecided materialDecided = new MaterialDecided();List<MaterialDecided> materialDecideds = materialDecidedMapper.selectProgressQueryList(materialDecided);params.add("materialDecided", materialDecideds);//设置访问的EntityHttpEntity entity = new HttpEntity<>(params, headers);//发起一个POST请求ResponseEntity<MaterialDecided> result = restTemplate.exchange(url, HttpMethod.POST, entity, MaterialDecided.class);for (MaterialDecided decided : materialDecideds) {Integer id = decided.getId();if (decided.getStatus() == AuditStatusCons.FAILED_TO_ACCEPT){materialAcceptanceMapper.deleteMaterialAcceptanceById(id);}}System.out.println(result);}}//子系统接收@PostMapping("/add")public AjaxResult add(HttpEntity httpEntity){//系统间通过“定时器”互相传输数据//获取系统交互 传输的数据(debug看所有数据的传输格式)//获取请求体中的数据LinkedHashMap body = (LinkedHashMap) httpEntity.getBody();//根据key获取值 装入新的ArrayList集合接收ArrayList<MaterialDecided> materialDecideds = (ArrayList<MaterialDecided>) body.get("materialDecided");//获取0索引位置的元素(虽然以集合接收,但是数据现在并不是集合形式)List<MaterialDecided> decided = (List<MaterialDecided>) materialDecideds.get(0);//转为json串String s = JSON.toJSONString(decided);//从json转为集合List<MaterialDecided> decideds = JSON.parseArray(s, MaterialDecided.class);//遍历集合,循环创建对象,set值for (MaterialDecided materialDecided : decideds) {ProcessingInquiry processingInquiry = new ProcessingInquiry();processingInquiry.setTheMatters(materialDecided.getApprovalFileType());processingInquiry.setProcesssingTime(materialDecided.getApplicationTime());processingInquiry.setStatus(materialDecided.getStatus());processingInquiry.setApprovalTime(materialDecided.getApprovalTime());processingInquiry.setRemark(materialDecided.getRemark());processingInquiry.setWaiId(materialDecided.getSonId());processingInquiry.setCompanyName(materialDecided.getCompanyName());//根据id查询当前对象是否存在,存在 修改,不存在 新增.ProcessingInquiry inquiry = processingInquiryService.selectBySonId(materialDecided.getSonId());if (inquiry == null){processingInquiryService.insertProcessingInquiry(processingInquiry);}else{processingInquiryService.updateProcessingInquiry(processingInquiry);}}return AjaxResult.success();}注入RestTemplate时需要配置类
@Configuration
public class RestTemplateConfig {@Beanpublic RestTemplate restTemplate(RestTemplateBuilder builder) {return builder.build();}
}

调用开放接口(多个系统间的数据传输)相关推荐

  1. 系统间通信2:通信管理与远程方法调用RMI

    本文引用 : https://yinwj.blog.csdn.net/article/details/49120813 RMI : Remote Method Invocation,远程方法调用 RP ...

  2. 系统间数据传输,产品经理视角的9千字总结:接口、otter、log4j、SFTP、MQ……...

    一个系统装再多数据,不与其他系统交互,那也是孤岛系统,孤独没女朋友. 一个系统若很外向,不断撩拨周围的系统,也乐意被撩拨,成为了众系统中的"交际花",那么这货基本就是中台的性质. ...

  3. 使用技巧-Z平台为第三方系统开放接口过程

    大家好,实际工作中,经常会遇到为第三方系统开放访问接口的工作任务,那么,在Z平台中怎样为第三方快速开放接口的呢?下面,我为大家介绍一下操作流程. 示例说明: 在Z平台系统中,将产品信息表单的" ...

  4. 怎么看调用的接口_SpringCloud服务间调用

    本篇简介 在上一篇我们介绍了SpringCloud中的注册中心组件Eureka.Eureka的作用是做服务注册与发现的,目的是让不同的服务与服务之间都可以通过注册中心进行间接关联,并且可以通过注册中心 ...

  5. 金蝶OSF接口(s-HR系统)调用示例

    金蝶OSF接口调用示例(金蝶s-HR系统接口): ①封装OSF接口参数Map: ②调用OSF接口: 以下示例仅演示了在Java环境中调用OSF接口,还有其它方式进行调用(例如使用单点登录的方式调用OS ...

  6. 调用金蝶EAS系统标准凭证接口,封装凭证对象,调用业务接口前需先登录

    第三方系统与金蝶EAS系统凭证集成时,调用金蝶EAS系统标准凭证接口WSGLWebServiceFacade,下载对应的wsdl文件,生成客户端代码之后,可参考以下接口调用方式. 与EAS系统进行凭证 ...

  7. 小程序、微信公众号调用监控摄像头直播开放接口文档

    为了满足各行业用户使用监控视频直播业务需求,云事通公司拟定发布基于WEB方式,M3U8视频调用对接接口如下,前端需要部署我们智能网关,然后推流到我们云平台,支持市场主流监控摄像头厂商的接入,欢迎大家咨 ...

  8. Win10系统,用C++调用OpenCV接口,播放本地视频文件,播放本地和网络摄像头

    1 前言 前边2篇文章介绍了在WIN10系统上,分别用C++和Python调用OpenCV接口,加载和显示一张静态图片.本篇我们来看一下,用C++如何调用OpenCV接口,打开和播放本地视频文件,打开 ...

  9. 常见的系统间接口方式(03)- 文件传输的系统接口模式

    导读: 原文路径:https://mp.weixin.qq.com/s/FRMMthtA64gaXhBqyTlknw 大家可以关注我个人公众号,所有分享内容,会在公众号第一时间推送,且阅读排版更好. ...

最新文章

  1. php面向对象编程快速入门,PHP面向对象编程的快速入门
  2. python【蓝桥杯vip练习题库】ALGO-118连续正整数的和(枚举优化)
  3. log4j(六)——log4j.properties简单配置样例说明
  4. 转载--va_list
  5. 使用jQuery Treeview插件实现树状结构效果
  6. 抽走超大桌布之后保持桌面物体不掉,需要多快的速度?
  7. linux-权限管理acl高级
  8. 【C/C++】algorithm头文件下常用函数
  9. 【智能制造】智能制造50大产业链全景图
  10. 基于DAC8563模块的低速模拟振镜驱动,实现直线插补,点到点划线
  11. 微信开发模式api接口文档简介
  12. ios 代理和委托的区别
  13. win11怎么开启休眠睡眠?
  14. gdb: warning Can‘t open file /usr/lib/libstdc++.so.6.0.19 during file-backed mapping note processing
  15. C语言中访问结构体成员时 点 . 和 箭头 - 的区别
  16. Matlab论文插图绘制模板第32期—等高线图(contour)
  17. pv vg lv 裸盘 裸设备 文件系统
  18. 长虹官方刷机包和刷机教程
  19. 苹果x付款显示服务器异常,怎么解决App Store未完成付款或AppleID登录失败
  20. 计算机控制和dcs控制的区别,从几个方面了解DCS与PLC控制柜到底有什么区别

热门文章

  1. 小程序创业,有哪些行业方向可以选?
  2. 发现一个在线学习JavaScript的网站,墙裂推荐!
  3. 嵌入式:ARM嵌入式系统开发流程概述
  4. windows中electron用ibm_db模块调用db2数据库
  5. 浅谈对信息管理的认识
  6. canal工作原理及简单案例演示
  7. 程序员带你一步步分析AI如何玩Flappy Bird
  8. Android_通过两个点的经纬度计算距离
  9. 企立方:拼多多商家运营思路
  10. 2018 前端性能优化清单(转载)