1. 设置RestTemplate请求工具
在common文件夹下创建HTTPRequestRes.java(一般通用的工具或方法都创建在海星的common文件夹下)
在该文件内设置RestTemplate请求工具
代码如下:
package com.hikvision.isc.common.utils;
import com.hikvision.starfish.core.response.business.BaseResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import com.alibaba.fastjson.JSONObject;
import org.springframework.http.*;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import org.springframework.web.client.RestTemplate;
@Component
public class HTTPRequestRes {private static final Logger logger = LoggerFactory.getLogger(HTTPRequestRes.class);
public static final String ACCEPT = "Accept";
public static final String CONTENT_ENCODING = "Content-Encoding";
public static final String CONTENT_TYPE = "Content-Type";
private static BaseResponse baseResponse = new BaseResponse();
@Autowired
private RestTemplate restTemplate;
public BaseResponse RestTemplate(String userId, String url, HttpMethod httpMethod, Object content, Class t) throws Exception {
if (StringUtils.isEmpty(url)) {
return baseResponse;
}
HttpHeaders headers = getHttpHeaders(userId);
headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity
2. 调用RestTemplate请求工具请求irds组件的相关接口 以irds组件的以下接口为例:
文章图片
(1)在service.impl文件夹下创建任意文件
在service.impl文件夹下创建MyIrdsService,
在代码中自定义方法,设置参数,通过调用RestTemplate请求方法进行请求
package com.hikvision.isc.module.business.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.hikvision.isc.common.utils.HTTPRequestRes;
import com.hikvision.starfish.core.response.business.BaseResponse;
import com.hikvision.starfish.irds.response.PageData;
import com.hikvision.starfish.irds.service.IIrdsService;
import com.hikvision.starfish.irds.vo.RegionQueryReqVo;
import com.hikvision.starfish.irds.vo.RegionVo;
import com.hikvision.starfish.irds.vo.SubRegionQueryReqVo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import com.hikvision.isc.common.errorcode.DefaultErrorCode;
import org.springframework.http.HttpMethod;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class MyIrdsService {
private static Logger logger = LoggerFactory.getLogger(MyIrdsService.class);
private static final String IRDS = "irds";
private static final String IRDS_CAMERA_LIST = "/irds/api/v1/camera/advance/cameraList";
@Autowired
private HTTPRequestRes httpRequestRes;
/**根据监控点名称获取列表*/
public BaseResponse queryCameraListByName(String cameraName, String userId){
BaseResponse baseResponse = new BaseResponse();
//拼接完整的相应接口的完整请求地址
String url = "http://" + IRDS + "." + IRDS + IRDS_CAMERA_LIST;
try{
//在这里设置接口的请求参数
JSONObject jsonObject = new JSONObject();
jsonObject.put("pageNo", 1);
//起始页
jsonObject.put("pageSize", 1000);
//指定每页的记录数据量大小
jsonObject.put("cameraName", cameraName);
//监控点名称
jsonObject.put("isCascade", 2);
//是否级联, 0:非级联, 1:级联, 2:不限//userId:用户名url:接口请求地址HttpMethod.POST:请求方式(可以为GET、POST、PUT请求等)jsonObject:请求参数
//调用RestTemplate请求工具,传入相应参数进行请求
baseResponse = httpRequestRes.RestTemplate(userId, url, HttpMethod.POST, jsonObject, JSONObject.class);
return baseResponse;
}catch (Exception e){
baseResponse = exection(url + e.getMessage());
return baseResponse;
}
}public BaseResponse exection(String message) {
BaseResponse baseResponse = new BaseResponse();
baseResponse.setCode("-1");
baseResponse.setMsg(message);
logger.error("irds访问失败", message);
return baseResponse;
}
}
3. 定义service接口以及接口实现类 在service中定义接口
文章图片
在接口实现类中重写接口中的方法,调用2中的方法即可
文章图片
4. 定义controller层
文章图片
5. 进行测试 【通用框架——通过RestTemplate调用irds组件接口获取数据】
文章图片
文章图片
调用成功,成功从irds组件获得指定的数据
推荐阅读
- Java|Java基础——数组
- 人工智能|干货!人体姿态估计与运动预测
- java简介|Java是什么(Java能用来干什么?)
- Java|规范的打印日志
- Linux|109 个实用 shell 脚本
- 程序员|【高级Java架构师系统学习】毕业一年萌新的Java大厂面经,最新整理
- Spring注解驱动第十讲--@Autowired使用
- SqlServer|sql server的UPDLOCK、HOLDLOCK试验
- jvm|【JVM】JVM08(java内存模型解析[JMM])
- 技术|为参加2021年蓝桥杯Java软件开发大学B组细心整理常见基础知识、搜索和常用算法解析例题(持续更新...)