自定义注解@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环境
4729 3
设备接入--海康摄像头SDK
|
物联网 数据处理 智能硬件
基于STM32的智能家居控制系统设计与实现
基于STM32的智能家居控制系统设计与实现
1240 0
|
2月前
|
人工智能 测试技术 API
Apifox 和 Apipost如何选?2025企业API开发工具选型需求分析及建议
本文对比了 Apipost 与 Apifox 在 AI 功能及 API 功能上的差异,指出 Apipost 凭借 AI 一键补全文档、智能提取 API 文档、AI 断言、模拟测试数据、生成用例、参数更新、脚本生成、全局搜索等能力,显著提升开发效率与质量。同时,Apipost 在离线使用、一键分享、OpenAPI 格式支持、多协议适配、数据库导入、模拟数据、压测功能等基础 API 能力上亦全面领先。在AI时代的2025年,API + AI是Apipost将AI技术融合行业应用的最佳典范,这种趋势下,也说明Apipost 更能助力企业与开发者实现高效智能开发。
123 2
|
Web App开发 编解码 安全
在高版本谷歌Chrome浏览器中用VLC播放海康、大华RTSP实时视频完全方案
随着互联网基础设施的完善以及4G、5G等技术的大规模商用,在Chrome、Firefox、Edge等浏览器播放RTSP视频流也慢慢成为了信息化系统的行业标准。早些年还可用VLC播放器在网页中播放RTSP视频流,好景不长,2015年Chrome、Firefox等浏览器取消了对 NPAPI插件的支持,导致在高版本的Chrome等网页中播放海康威视、大华等摄像头RTSP视频流也成了奢望。
2895 0
WK
|
11月前
|
测试技术 开发者 Python
python模块化设计
Python的模块化设计支持开发者将代码拆分成独立模块,提升代码的可读性、可维护性和复用性。通过`.py`文件定义模块,并利用`import`语句导入所需功能,同时可通过包含`__init__.py`的目录创建包以组织多个模块。Python按特定顺序搜索模块,支持修改`sys.path`添加自定义路径。此外,支持相对与绝对导入方式,便于灵活使用模块资源。遵循良好的编程习惯有助于开发高质量的可复用模块,而虚拟环境与依赖管理工具则确保项目间的依赖隔离,进一步增强项目的稳定性和可扩展性。
WK
196 2
curl: symbol lookup error: curl: undefined symbol: curl_mime_free
curl: symbol lookup error: curl: undefined symbol: curl_mime_free
1077 0
|
存储 JSON DataWorks
DataWorks产品使用合集之如何通过数据集成将API接口产生的数据集成到DataWorks
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
Java
Mapper that could not be found
Mapper that could not be found
204 0
|
Java 关系型数据库 MySQL
【Java】已解决com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException异常
【Java】已解决com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException异常
960 0
|
小程序 关系型数据库 MySQL
Gitee项目分享——学之思开源考试系统,食堂大妈看完都学会了
Gitee项目分享——学之思开源考试系统,食堂大妈看完都学会了