自定义注解@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

目录
相关文章
在markdown中添加视频的两种方法
markdown浏览器中如何添加视频呢?两种方式
|
数据安全/隐私保护 Python
一键导出全部邮件到本地,彻底解放双手
大家可能会遇到这样一种情况:有没有什么办法可以将邮箱里面的邮件全部下载到本地(包括**图文、压缩附件、文档附件**等)。比如HR、收集意见的工作人员甚至是一些负责收邮件的老师等人都会遇到这种情况。
2616 0
|
存储 Java Linux
SpringBoot集成海康网络设备SDK
概述 设备网络SDK是基于设备私有网络通信协议开发的,为嵌入式网络硬盘录像机、NVR、网络摄像机、网络球机、视频服务器、解码器、报警主机、网络存储等产品服务的配套模块,用于远程访问和控制设备软件的二次开发。 功能 图像预览, 文件回放和下载, 云台控制, 布防/撤防, 语音对讲, 日志管理, 解码卡, 远程升级, 远程重启/关闭, 格式化硬盘, 参数配置(系统配置, 通道配置, 串口配置, 报警配置, 用户配置), 多路解码器, 智能设备功能和获取设备能力集等。
2488 108
|
API 文件存储 数据安全/隐私保护
python 群晖nas接口(一)
这段代码展示了如何通过群晖NAS的API获取认证信息(SID)并列出指定文件夹下的所有文件。首先,`get_sid()`函数通过用户名和密码登录NAS,获取会话ID(SID)。接着,`list_file(filePath, sid)`函数使用该SID访问FileStation API,列出给定路径`filePath`下的所有文件。注意需替换`yourip`、`username`和`password`为实际值。
1065 19
|
存储 供应链 区块链
区块链技术在供应链管理中的应用与实践
区块链技术在供应链管理中的应用与实践
WK
|
测试技术 开发者 Python
python模块化设计
Python的模块化设计支持开发者将代码拆分成独立模块,提升代码的可读性、可维护性和复用性。通过`.py`文件定义模块,并利用`import`语句导入所需功能,同时可通过包含`__init__.py`的目录创建包以组织多个模块。Python按特定顺序搜索模块,支持修改`sys.path`添加自定义路径。此外,支持相对与绝对导入方式,便于灵活使用模块资源。遵循良好的编程习惯有助于开发高质量的可复用模块,而虚拟环境与依赖管理工具则确保项目间的依赖隔离,进一步增强项目的稳定性和可扩展性。
WK
403 2
|
Kubernetes Nacos 容器
nacos注册不上
我正在使用开源的Nacos,并已在Kubernetes中部署了Nacos服务,通过端口映射可在集群外访问Nacos控制台。Kubernetes使用NodePort类型暴露了8848、9848、9849、7848和9555端口,但在尝试注册时遇到问题,出现“Client not connected, current status: STARTING”的错误,导致启动失败。
253 1
|
Web App开发 编解码 移动开发
网页不安装插件如何播放RTSP/FLV视频
点量云流提出了一种基于后台拉流转码的方案,将RTSP/RTMP/FLV等协议的视频流转换为WebRTC格式,实现在现代浏览器中的无插件播放。此方案具有良好的兼容性,支持主流浏览器,无需担心兼容问题。它利用浏览器硬件解码能力,减少终端计算资源消耗,并且具备低延迟和高实时性的优点,延迟可控制在100ms以内,非常适合摄像头监控领域。此外,前端集成简单,仅需使用标准WebRTC接口即可接入,降低了复杂度。
927 9
|
安全 Java 测试技术
一文帮你搞定JDK8升级11
本文记录了作者从JDK8升级到11的实践过程和升级后的效果以及JDK11新玩法。
720 10
|
编解码 安全 Linux
基于arm64架构国产操作系统|Linux下的RTMP|RTSP低延时直播播放器开发探究
这段内容讲述了国产操作系统背景下,大牛直播SDK针对国产操作系统与Linux平台发布的RTMP/RTSP直播播放SDK。此SDK支持arm64架构,基于X协议输出视频,采用PulseAudio和Alsa Lib处理音频,具备实时静音、快照、缓冲时间设定等功能,并支持H.265编码格式。此外,提供了示例代码展示如何实现多实例播放器的创建与管理,包括窗口布局调整、事件监听、视频分辨率变化和实时快照回调等关键功能。这一技术实现有助于提高直播服务的稳定性和响应速度,适应国产操作系统在各行业中的应用需求。
485 3

热门文章

最新文章