自定义注解@EnableHikHttpRequest、@HikHttp、@HikHttpRequest 实现对海康平台接口访问

简介: spring boot自定义注解封装对海康SDK的请求,不用写实现类。有时间的老铁也可改造成适用所有平台
完整代码
  • 对接海康开放平台通常,先引入SDK,然后更具API文档去写需要的实现类接口,接口里面拼接各种参数,然后调用SDK返回太烦了,代码不够简洁,受到Feign启发,将对海康平台接口访问封装成注解的形式
@HikHttp
public interface HikPlatformApiService {

    @HikHttpRequest(value = HikApiConstant.personList, method = HttpMethod.POST)
    public HikVo createNetEaseAcc(Map params);

}

image.png

-传统的调用方式

`

/**
 * 调用POST接口,返回图片
 * 接口实际url:https://ip:port/artemis/api/visitor/v1/record/pictures
 * @return
 */
public static String callPostImgs() throws Exception {
    ArtemisConfig config = new ArtemisConfig();
    config.setHost("127.0.0.1"); // 代理API网关nginx服务器ip端口
    config.setAppKey("20469790");  // 秘钥appkey
    config.setAppSecret("lofnD6DbnBllHmk5YOyx");// 秘钥appSecret
    final String getSecurityApi = "/artemis" + "/api/visitor/v1/record/pictures"; // 接口路径
    Map<String, String> path = new HashMap<String, String>(2) {
        {
            put("https://", getSecurityApi);
        }
    };
    Map<String, String> head = new HashMap<String, String>(2) {  //get请求的head参数
        {
            put("headpost", "sky-test");
        }
    };
    Map<String, String> query = new HashMap<String, String>(2) {  //get请求的head参数
        {
            put("domainId", "0");
        }
    };
    JSONObject jsonBody = new JSONObject();
    jsonBody.put("svrIndexCode", "9ff58bc2-65a5-464b-b28c-daea67ba9569");
    jsonBody.put("picUri", "/pic?9dda12i40-e*5b84626c4105m5ep=t=i3p*i=d1s*i=d3b*i1d3b*855925cea-96008b--2718943z855s=5i76=");
    String body = jsonBody.toJSONString();
    //参数根据接口实际情况设置
    HttpResponse result = ArtemisHttpUtil.doPostStringImgArtemis(config, path, body, query, null,"application/json",head);
    try {
        HttpResponse resp = result;
        if (302==resp.getStatusLine().getStatusCode()) {
            /*
            获取图片数据保存到本地
            注:1.对于有时效的图片,必须尽快保存到本地
               2.若无时效,则可以直接保存location,后续自行访问获取
             */
            Header header=  resp.getFirstHeader("location");
            String  newUrl = header.getValue();
            HttpGet httpget = new HttpGet(newUrl);
            HttpClient httpClient = wrapClient(httpget.getURI().getScheme()+"://"+httpget.getURI().getHost());
            HttpResponse execute = httpClient.execute(httpget);
            HttpEntity entity = execute.getEntity();
            InputStream in = entity.getContent();
            Tools.savePicToDisk(in, "d:/", "test311.jpg");
        }else{
            System.out.println("下载出错");
        }

    } catch (Exception e) {
        e.printStackTrace();
    }

    return getSecurityApi;
}

public static void main(String[] args) throws Exception {
    String result = callPostApiGetOrgList();
    System.out.println(result);
    String VechicleDataResult = callPostApiGetRegions();
    System.out.println(VechicleDataResult);
}

}
`

  • 使用注解后,简洁明了

image.png

  • 使用
    先在启动类上加上@EnableHikHttpRequest("com.coder.gctool.test")注解,和对应要扫描的包
    然后在该包下写接口
    image.png

接口上添加@HikHttp注解,方法上添加 @HikHttpRequest注解就完成了
-测试
image.png

目录
相关文章
|
Linux 开发工具 Windows
设备接入--海康摄像头SDK
springboot-对接海康摄像头,兼容window和Linux环境
5030 3
设备接入--海康摄像头SDK
|
XML 存储 数据可视化
Flowable学习笔记(一、入门)
Flowable学习笔记(一、入门)
3050 1
Flowable学习笔记(一、入门)
|
XML Java 数据格式
使用Java + Freemarker 导出word文档
使用Java + Freemarker 导出word文档
WK
|
测试技术 开发者 Python
python模块化设计
Python的模块化设计支持开发者将代码拆分成独立模块,提升代码的可读性、可维护性和复用性。通过`.py`文件定义模块,并利用`import`语句导入所需功能,同时可通过包含`__init__.py`的目录创建包以组织多个模块。Python按特定顺序搜索模块,支持修改`sys.path`添加自定义路径。此外,支持相对与绝对导入方式,便于灵活使用模块资源。遵循良好的编程习惯有助于开发高质量的可复用模块,而虚拟环境与依赖管理工具则确保项目间的依赖隔离,进一步增强项目的稳定性和可扩展性。
WK
275 2
|
存储 Java Linux
SpringBoot集成海康网络设备SDK
概述 设备网络SDK是基于设备私有网络通信协议开发的,为嵌入式网络硬盘录像机、NVR、网络摄像机、网络球机、视频服务器、解码器、报警主机、网络存储等产品服务的配套模块,用于远程访问和控制设备软件的二次开发。 功能 图像预览, 文件回放和下载, 云台控制, 布防/撤防, 语音对讲, 日志管理, 解码卡, 远程升级, 远程重启/关闭, 格式化硬盘, 参数配置(系统配置, 通道配置, 串口配置, 报警配置, 用户配置), 多路解码器, 智能设备功能和获取设备能力集等。
1999 98
|
安全 Java 测试技术
一文帮你搞定JDK8升级11
本文记录了作者从JDK8升级到11的实践过程和升级后的效果以及JDK11新玩法。
480 10
|
编解码 安全 Linux
基于arm64架构国产操作系统|Linux下的RTMP|RTSP低延时直播播放器开发探究
这段内容讲述了国产操作系统背景下,大牛直播SDK针对国产操作系统与Linux平台发布的RTMP/RTSP直播播放SDK。此SDK支持arm64架构,基于X协议输出视频,采用PulseAudio和Alsa Lib处理音频,具备实时静音、快照、缓冲时间设定等功能,并支持H.265编码格式。此外,提供了示例代码展示如何实现多实例播放器的创建与管理,包括窗口布局调整、事件监听、视频分辨率变化和实时快照回调等关键功能。这一技术实现有助于提高直播服务的稳定性和响应速度,适应国产操作系统在各行业中的应用需求。
431 3
|
人工智能 自然语言处理
华为GTS LocMoE+:高可扩展性亲和度 MoE 架构,低开销实现主动路由
【8月更文挑战第6天】华为GTS提出LocMoE+,一种高可扩展性Mixture-of-Experts架构,通过亲和度路由策略高效分配任务,自适应调整专家容量优化资源利用,并采用通信优化技术减少开销,实现在保证性能的同时大幅提升训练效率和推理速度,尤其在多节点集群环境下优势明显。
309 1
计算机硬件清洁与防尘
【8月更文挑战第2天】
874 1
|
JSON JavaScript 前端开发
DVWA JavaScript 通关解析
DVWA JavaScript 通关解析