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

BitLuminaryMaster
• 阅读 1009

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 <T> BaseResponse RestTemplate(String userId, String url, HttpMethod httpMethod, Object content, Class<T> t) throws Exception {
        if (StringUtils.isEmpty(url)) {
            return baseResponse;
        }
        HttpHeaders headers = getHttpHeaders(userId);
        headers.setContentType(MediaType.APPLICATION_JSON);
        HttpEntity<Object> entity = new HttpEntity<>(content, headers);
        ResponseEntity<String> 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组件接口获取数据
调用成功,成功从irds组件获得指定的数据

点赞
收藏
评论区
推荐文章
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Wesley13 Wesley13
3年前
java常见的 http 请求库比较
java常见的http请求库有httpclient,RestTemplate,OKhttp,更高层次封装的feign、retrofit1、HttpClientHttpClient:代码复杂,还得操心资源回收等。代码很复杂,冗余代码多,不建议直接使用。2、RestTemplateRestTemplate:是Spring提供的用于访问
Easter79 Easter79
3年前
tp3.2 生成带logo的二维码
下载phpqrcode整合到Thinkphp框架在“ThinkPHP\\Library\\Vendor\\”下新建目录phpqrcode,将压缩包内容解压到该文件夹下。调用phpqrcode生成二维码在IndexController控制器下添加如下方法:
CuterCorley CuterCorley
4年前
uni-app入门教程(5)接口的基本使用
前言本文主要介绍uniapp提供的一些基础接口,包括:网络请求接口,用于通过指定的请求方法,携带特定的数据,向特定的地址请求并返回请求结果;图片处理接口,包括选择、预览、获取信息、保存到本地等接口;文件处理接口,包括文件上传和下载接口;数据缓存接口,包括以同步或异步的方式保存、获取或删除数据的接口。一、网络请求小程序要想正常运转,都需要与服务器端进
Wesley13 Wesley13
3年前
Java 调用RESTful接口的几种方式
前端一般通过Ajax来调用,后端调用的方式还是挺多的,比如HttpURLConnection,HttpClient,Spring的RestTemplate服务端代码如下:服务端接口请求的URL:http://localhost:8080/rest/user/getUser/xiaoming/18(https://www.oschina.net/a
Stella981 Stella981
3年前
RestTemplate OR Spring Cloud Feign 上传文件
SpringBoot,通过RestTemplate或者SpringCloudFeign,上传文件(支持多文件上传),服务端接口是MultipartFile接收。将文件的字节流,放入ByteArrayResource中,并重写getFilename方法。然后将ByteArrayResource放入MultiValueMap中(如果是Feign调
Wesley13 Wesley13
3年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Stella981 Stella981
3年前
JeePlus:代码结构
ylbtechJeePlus:代码结构1.返回顶部1、代码结构1.文件结构1.1.源码目录src/main/javacom.jeeplusJeeplus目录录├common公共模块存放目录│├SMS短信工具类具类│├
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
3年前
Centos常用操作记录
!/bin/bash重新设置nohup的输出文件nohupcommandmyout.file2&1& 修改文件夹以及文件夹下的子文件权限chmod 755 files/ R 设置开机启动服务 sshsystemctl ena
Easter79 Easter79
3年前
TinyForm
TinyForm做一个用起来简单的表单工具库。先说说功能吧,这个工具提供了以下几个接口:通过任意DOM元素创建表单实例(TinyForm)可以自定义表单控件选择器获取表单控件获取(设置)DOM范围内所有(单个)表单控件的数据使用标签式设置验证规则以及提示消息获取(设置)DOM范围内所有(
BitLuminaryMaster
BitLuminaryMaster
Lv1
是谁,在寒冷的冬天,掀开被单,冰冻爱情的温暖。
文章
5
粉丝
0
获赞
0