This commit is contained in:
TS-QD1 2025-07-24 09:47:56 +08:00
parent f009edebe6
commit eca16b98d1
4 changed files with 276 additions and 0 deletions

Binary file not shown.

View File

@ -106,6 +106,14 @@
<artifactId>log4j</artifactId>
<version>1.2.14</version>
</dependency>
<dependency>
<groupId>hk</groupId>
<artifactId>artemis-http-client</artifactId>
<version>1.1.11.RELEASE</version>
<scope>system</scope>
<systemPath>${pom.basedir}/libs/artemis-http-client-1.1.11.RELEASE.jar</systemPath>
</dependency>
</dependencies>
<build>

View File

@ -0,0 +1,58 @@
package com.cm.population.utils;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
/**
* 工具类
*
* @author
* @create 2019-01-11 17:06
**/
public class Tools {
/**
* 将图片写到 硬盘指定目录下
*
* @param in
* @param dirPath
* @param filePath
*/
public static void savePicToDisk(InputStream in, String dirPath,
String filePath) {
try {
File dir = new File(dirPath);
if (dir == null || !dir.exists()) {
dir.mkdirs();
}
//文件真实路径
String realPath = dirPath.concat(filePath);
File file = new File(realPath);
if (file == null || !file.exists()) {
file.createNewFile();
}
FileOutputStream fos = new FileOutputStream(file);
byte[] buf = new byte[1024];
int len = 0;
while ((len = in.read(buf)) != -1) {
fos.write(buf, 0, len);
}
fos.flush();
fos.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

210
src/test/java/HKTest.java Normal file
View File

@ -0,0 +1,210 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.cm.population.utils.Tools;
import com.hikvision.artemis.sdk.ArtemisHttpUtil;
import com.hikvision.artemis.sdk.config.ArtemisConfig;
import org.apache.http.Header;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
import static com.hikvision.artemis.sdk.util.HttpUtil.wrapClient;
public class HKTest {
/**
* 请根据技术支持提供的实际的平台IP/端口和API网关中的合作方信息更换static静态块中的三个参数.
* [1 host]
* host格式为IPPort如10.0.0.1:443
* 当使用https协议调用接口时IP是平台nginxIPPort是https协议的端口
* 当使用http协议调用接口时IP是artemis服务的IPPort是artemis服务的端口默认9016
* [2 appKey和appSecret]
* 请按照技术支持提供的合作方Key和合作方Secret修改
* appKey合作方Key
* appSecret合作方Secret
* 调用前看清接口传入的是什么是传入json就用doPostStringArtemis方法是表单提交就用doPostFromArtemis方法
*
*/
/**
* API网关的后端服务上下文为/artemis
*/
private static final String ARTEMIS_PATH = "/artemis";
/**
* 调用POST请求类型接口这里以获取组织列表为例
* 接口实际url:https://ip:port/artemis/api/resource/v1/org/orgList
* @return
*/
public static String callPostApiGetOrgList() throws Exception {
/**
* https://ip:port/artemis/api/resource/v1/org/orgList
* 通过查阅AI Cloud开放平台文档或网关门户的文档可以看到获取组织列表的接口定义,该接口为POST请求的Rest接口, 入参为JSON字符串接口协议为https
* ArtemisHttpUtil工具类提供了doPostStringArtemis调用POST请求的方法入参可传JSON字符串, 请阅读开发指南了解方法入参没有的参数可传null
*/
ArtemisConfig config = new ArtemisConfig();
config.setHost("1.30.233.210:56443"); // 代理API网关nginx服务器ip端口
config.setAppKey("27404117"); // 秘钥appkey
config.setAppSecret("VxXrlPboTJI7ygpf4WBL");// 秘钥appSecret
// final String getCamsApi = ARTEMIS_PATH + "/api/resource/v1/org/orgList";
// {"code":"0","msg":"SUCCESS","data":{"total":1,"list":[{"name":"管委会中心端","indexCode":"root00000000","treeCode":"0","parentIndexCode":"-1","externalIndexCode":"1502"}]}}
final String getCamsApi = ARTEMIS_PATH + "/api/resource/v1/regions/root";
Map<String, String> paramMap = new HashMap<String, String>();// post请求Form表单参数
paramMap.put("pageNo", "1");
paramMap.put("pageSize", "2");
String body = JSON.toJSON(paramMap).toString();
Map<String, String> path = new HashMap<String, String>(2) {
{
put("https://", getCamsApi);
}
};
return ArtemisHttpUtil.doPostStringArtemis(config,path, body, null, null, "application/json");
}
/**
* 摄像头资源
* @return
* @throws Exception
*/
public static String callPostApiGetCameras() throws Exception {
ArtemisConfig config = new ArtemisConfig();
config.setHost("1.30.233.210:56443"); // 代理API网关nginx服务器ip端口
config.setAppKey("27404117"); // 秘钥appkey
config.setAppSecret("VxXrlPboTJI7ygpf4WBL");// 秘钥appSecret
final String getCamsApi = ARTEMIS_PATH + "/api/resource/v1/cameras";
Map<String, String> paramMap = new HashMap<String, String>();// post请求Form表单参数
paramMap.put("pageNo", "1");
paramMap.put("pageSize", "2");
// paramMap.put("regionIndexCodes", JSON.toJSONString(Arrays.asList("root00000000")));
String body = JSON.toJSON(paramMap).toString();
Map<String, String> path = new HashMap<String, String>(2) {
{
put("https://", getCamsApi);
}
};
return ArtemisHttpUtil.doPostStringArtemis(config,path, body, null, null, "application/json");
}
public static String callPostApiGetPreview() throws Exception {
ArtemisConfig config = new ArtemisConfig();
config.setHost("1.30.233.210:56443"); // 代理API网关nginx服务器ip端口
config.setAppKey("27404117"); // 秘钥appkey
config.setAppSecret("VxXrlPboTJI7ygpf4WBL");// 秘钥appSecret
final String getCamsApi = ARTEMIS_PATH + "/api/video/v1/cameras/previewURLs";
Map<String, String> paramMap = new HashMap<String, String>();// post请求Form表单参数
paramMap.put("cameraIndexCode", "8d03580e6ffc40678000b6b1f4fe1918");
String body = JSON.toJSON(paramMap).toString();
Map<String, String> path = new HashMap<String, String>(2) {
{
put("https://", getCamsApi);
}
};
return ArtemisHttpUtil.doPostStringArtemis(config,path, body, null, null, "application/json");
}
/**
* 调用POST请求类型接口这里以分页获取区域列表为例
* 接口实际urlhttps://ip:port/artemis/api/api/resource/v1/regions
* @return
*/
public static String callPostApiGetRegions() throws Exception {
/**
* https://ip:port/artemis/api/resource/v1/regions
* 过查阅AI Cloud开放平台文档或网关门户的文档可以看到分页获取区域列表的定义,这是一个POST请求的Rest接口, 入参为JSON字符串接口协议为https
* ArtemisHttpUtil工具类提供了doPostStringArtemis调用POST请求的方法入参可传JSON字符串, 请阅读开发指南了解方法入参没有的参数可传null
*/
ArtemisConfig config = new ArtemisConfig();
config.setHost("127.0.0.1"); // 代理API网关nginx服务器ip端口
config.setAppKey("20469790"); // 秘钥appkey
config.setAppSecret("lofnD6DbnBllHmk5YOyx");// 秘钥appSecret
final String getCamsApi = ARTEMIS_PATH + "/api/resource/v1/regions";
Map<String, String> paramMap = new HashMap<String, String>();// post请求Form表单参数
paramMap.put("pageNo", "1");
paramMap.put("pageSize", "2");
paramMap.put("treeCode", "0");
String body = JSON.toJSON(paramMap).toString();
Map<String, String> path = new HashMap<String, String>(2) {
{
put("https://", getCamsApi);
}
};
return ArtemisHttpUtil.doPostStringArtemis(config,path, body, null, null, "application/json");
}
/**
* 调用POST接口返回图片
* 接口实际urlhttps://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();
// String result = callPostApiGetCameras();
String result = callPostApiGetPreview();
JSONObject jsonObject = JSONObject.parseObject(result);
System.out.println(jsonObject);
// String VechicleDataResult = callPostApiGetRegions();
// System.out.println(VechicleDataResult);
}
}