通用框架——通过RestTemplate调用irds组件接口获取数据

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 entity = new HttpEntity<>(content, headers); ResponseEntity responseEntity = restTemplate.exchange(url, httpMethod, entity, String.class); String ret = responseEntity.getBody(); baseResponse = JSONObject.parseObject(ret, BaseResponse.class); return baseResponse; }public static HttpHeaders getHttpHeaders(String userId) { HttpHeaders headers = new HttpHeaders(); headers.add(ACCEPT, "application/json"); headers.add(CONTENT_ENCODING, "UTF-8"); headers.add(CONTENT_TYPE, "application/json; charset=UTF-8"); headers.add("userId",userId); return headers; } }
2. 调用RestTemplate请求工具请求irds组件的相关接口 以irds组件的以下接口为例:
通用框架——通过RestTemplate调用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中定义接口
通用框架——通过RestTemplate调用irds组件接口获取数据
文章图片

在接口实现类中重写接口中的方法,调用2中的方法即可
通用框架——通过RestTemplate调用irds组件接口获取数据
文章图片

4. 定义controller层 通用框架——通过RestTemplate调用irds组件接口获取数据
文章图片

5. 进行测试 【通用框架——通过RestTemplate调用irds组件接口获取数据】通用框架——通过RestTemplate调用irds组件接口获取数据
文章图片

通用框架——通过RestTemplate调用irds组件接口获取数据
文章图片

调用成功,成功从irds组件获得指定的数据

    推荐阅读