2024年1月15日发(作者:)
OpenAPI安全认证库 (Java)
开发指南V1.1.3
编审制 张小芳14
批 张森5
1 简介
1.1 前言
非常感谢您使用我们公司的产品,我们将竭诚为您提供最好的服务。本手册可能包含技术上不准确的地方或文字错误。本手册的内容将做定期的更新,恕不另行通知,更新的内容将会在本手册的新版本中加入。我们随时会改进或更新本手册中描述的产品或程序。
当您阅读该开发指南时,同时应该拿到表 1.2-1中列举的文件。文件功能如下表:
表 1.2-1文件清单
文件名
区域列表的两个POST请求接口的调用。
OpenAPI安全认证库 (Java)开发指南 使用OpenAPI 安全认证库(Java)的开发指南,即
要在项目中引入。
成果物简要说明,开发前必读。
本文档。
封装了安全认证签名工作的依赖JAR文件,开发需描述
开发可参考的示例代码,示例为获取组织列表和获取解压 OpenAPI 安全认证库(java)成果物,其目录结构如下所示:
├─demo
│ └─
├─doc
│ └─OpenAPI安全认证库 (Java)开发指南
├─
├─
1.2 OpenAPI 安全认证库(Java) 介绍
OpenAPI 安全认证库封装了 HTTP/HTTPS 的 POST 与GET方法,提供Java调用 OpenAPI HTTP 接口统一的入口。OpenAPI 安全认证库屏蔽了
OpenAPI HTTP 接口签名细节, 降低 Java对接 OpenAPI 的复杂度, 使用方只需引入 OpenAPI
安全认证库(Java)即可方便快速的实现 OpenAPI HTTP 接口的调用。
1.3 运行环境
可兼容JDK6及以上版本(JDK1.6仅支持http协议调用)。
1.4 更新说明
V1.1.3
修改JDK1.7支持https协议调用。
V1.1.2
修改request中的静态list在并发访问时抛ConcurrentModificationException异常的问题。
V1.1.1
代码编译版本改为1.6,支持使用jdk1.6进行开发。
V1.1.0
将OpenAPI安全认证库(Java)代码开源,可通过公网maven依赖引入。
V1.0.0
解决下载https地址的图片没有忽略认证的问题。
2 接口说明
2.1 调用步骤
2.1.1 调用说明
OpenAPI安全认证库(Java)源码已上传公网仓库,maven依赖坐标:
开发前请先导入包或通过maven坐标引入依赖jar包。
所有封装的Post和Get方法都在ArtemisHttpUtil类中。请参照2.1.2初始化参数说明对参数赋值,然后通过ArtemisHttpUtil类提供的静态方法直接调用OpenAPI
HTTP 接口,方法签名参照2.2方法定义章节内容。
2.1.2 初始化参数
在调用接口之前,请联系海康技术支持获取调用者访问平台的信息,包括平台IP,端口,调用者对应合作方的合作方Key和合作方Secret。
平台初始化参数通过设置ArtemisConfig类的静态属性设置。ArtemisConfig
中有三个属性,部分源代码如下:
ArtemisConfig {
public static String host;
public static String appKey;
public static String;
}
ArtemisConfig类中属性含义如下:
参数
名称
数据
类型
是否
必传
描述
host
String true
host格式为IP:Port,如10.0.0.1:443。
当使用https协议调用接口时,IP是平台(nginx)IP,Port是https协议的端口;
当使用http协议调用接口时,IP是artemis服务的IP,Port是artemis服务的端口(默认9016)。
请根据实际情况配置。
appKey
appSecret
String
String
true
true
为调用者分配合作方的合作方Key参数
为调用者分配合作方的合作方Secret参数
参数初始化示例代码:
="10.0.0.1:443"; //平台(nginx)IP和端口
="11111111"; //合作方key
ret ="AAAAAAAAAAAAA";//合作方Secret
调用者根据所调用接口请求参数和Method类型,选择2.2方法定义中合适的方法。
2.1.3 方法参数的统一说明
方法参数的统一说明适用于所有的接口。
2.1.3.1 path参数说明
所有方法的path参数,都是只存一组数据的HashMap集合,也就是path参数只存放一条Key-Value键值对。
Key:接口协议,格式为http请求的协议+“://”;
Value:接口路径,格式为API网关后端服务的上下文+OpenAPI接口的请求path。
http请求的协议是指OpenAPI接口的协议(HTTP/HTTPS);
API网关后端服务(artemis)的上下文为“/artemis”,
OpenAPI接口的请求path是API网关中所配置的接口对外提供的请求Path。
设置path参数的示例代码:
final String getSecurityApi = "/artemis" + "/api/hello/v1/headget"; // 接口路径
Map
{
put("", getSecurityApi); //Key为协议,Value为接口路径
}
};
2.1.3.2 query参数说明
query指请求地址中的参数,即请求url中的查询参数。
如请求url为"10.0.0.1:443/artemis/api?aa=CC&bb=DD",查询参数为"aa=CC&bb=DD",在方法调用封装query参数时,需要将Key=Value的键值对存放在Map中。
设置请求地址中查询参数"aa=CC&bb=DD"示例代码:
Map
("aa", "CC");
("bb", "DD");
2.1.3.3 接口调用超时时间设置
常量类Constants(全限定类名:nts)中DEFAULT_TIMEOUT静态属性可用于设置方法调用的超时时间,单位为毫秒,在接口调用之前,可通过该属性设置接口调用的超时时间,示例:
Constants. DEFAULT_TIMEOUT = 10000
示例中设置方法的调用超时时间为10秒。
2.2 接口定义
本节介绍ArtemisHttpUtil类中提供的静态方法和参数含义,并提供示例代码供调用者参考。
2.2.1 doGetArtemis(无header参数)
封装无header参数的get请求。
2.1.1.1 方法签名
public static String doGetArtemis(Map
accept, String contentType);
2.1.1.2 参数含义
参数
名称
path
querys
accept
数据
类型
Map
Map
String
是否
必填
true
false
false
请求的路径,格式参照2.1.3.1 path参数说明。
请求url的查询参数,格式参照2.1.3.2 query参数说明。
指定客户端能够接收的数据类型,该参数传空时默认设置接收全部类型。
contentType String false
请求实体正文的媒体类型,该参数传空时设置为默认值application/text。
描述
2.1.1.3 示例
public static void main(String[] args) {
="10.0.0.1:443"; //平台(nginx)IP和端口
="11111111"; //合作方key
ret ="AAAAAAAAAAAAA";//合作方Secret
final String getSecurityApi = "/artemis" + "/api/hello/v1/headget"; // 接口路径
Map
{
put("", getSecurityApi);
}
};
Map
("start", "0");
("size", "20");
String result = rtemis(path, querys, null, null);
n(result);
}
2.2.2 doGetArtemis(有header参数)
封装有header参数的get请求。
2.2.2.1 方法签名
public static String doGetArtemis(Map
accept, String contentType, Map
2.2.2.2 参数含义
参数
名称
path
querys
accept
数据
类型
Map
Map
String
是否
必填
true
false
false
请求的路径,格式参照2.1.3.1 path参数说明。
请求url的查询参数,格式参照2.1.3.2 query参数说明。
指定客户端能够接收的数据类型,该参数传空时默认设置接收全部类型。
contentType String false
请求实体正文的媒体类型,该参数传空时设置为默认值application/text。
header Map false
请求的header参数,需设为键值对格式。
描述
2.2.2.3 示例
public static void main(String[] args) {
="10.0.0.1:443"; //平台(nginx)IP和端口
="11111111"; //合作方key
ret ="AAAAAAAAAAAAA";//合作方Secret
final String getSecurityApi = "/artemis" + "/api/hello/v1/headget"; // 接口路径
Map
{
put("", getSecurityApi);
}
};
Map
{
put("headget", "sky-test");
}
};
Map
("start", "0");
("size", "20");
String result = rtemis(path, querys, null, null,head);
n(result);
}
2.2.3 doPostFormArtemis(无header参数)
封装无header参数的post表单类型请求,请求参数包含query参数和form表单参数。
2.2.3.1 方法签名
public static String doPostFormArtemis(Map
paramMap, Map
2.2.3.2 参数含义
参数
名称
path
paramMap
querys
accept
数据
类型
Map
Map
Map
String
是否
必填
true
false
false
false
请求的路径,格式参照2.1.3.1 path参数说明。
form表单请求的参数,需设为键值对格式。
请求url的查询参数,格式参照2.1.3.2 query参数说明。
指定客户端能够接收的数据类型,该参数传空时默认设置接收全部类型。
contentType String false
请求实体正文的媒体类型,该参数传空时设置为默认值application/text。
描述
2.2.3.2 示例
public static void main(String[] args) {
="10.0.0.1:443"; //平台(nginx)IP和端口
="11111111"; //合作方key
ret ="AAAAAAAAAAAAA";//合作方Secret
final String getSecurityApi = "/artemis" + "/api/hello/v1/headget"; // 接口路径
Map
{
put("", getSecurityApi);
}
};
Map
("start", "0");
("size", "20");
String result = FormArtemis(path, null, querys, null,null);
n(result);
}
2.2.4 doPostFormArtemis(有header参数)
封装有header参数的post表单类型请求,请求参数包含query参数和form表单参数。
2.2.4.1 方法签名
public static String doPostFormArtemis(Map
paramMap, Map
header);
2.2.4.2 参数含义
参数
名称
path
数据
类型
Map
是否
必填
true
请求的路径,格式参照2.1.3.1 path参数说明。
描述
paramMap
querys
accept
Map
Map
String
false
false
false
form表单请求的参数,需设为键值对格式。
请求url的查询参数,格式参照2.1.3.2 query参数说明。
指定客户端能够接收的数据类型,该参数传空时默认设置接收全部类型。
contentType String false
请求实体正文的媒体类型,该参数传空时设置为默认值application/text。
header Map false
请求的header参数,需设为键值对格式。
2.2.4.3 示例
public static void main(String[] args) {
="10.0.0.1:443"; //平台(nginx)IP和端口
="11111111"; //合作方key
ret ="AAAAAAAAAAAAA";//合作方Secret
final String getSecurityApi = "/artemis" + "/api/hello/v1/headget"; // 接口路径
Map
{
put("", getSecurityApi);
}
};
Map
{
put("headpost", "sky-test");
}
};
Map
("start", "0");
("size", "20");
String result = FormArtemis(path, null, querys, null,null,head);
n(result);
}
2.2.5 doPostStringArtemis(无header参数)
封装无header参数的post类型请求,请求body为json字符串。
2.2.5.1 方法签名
public static String doPostStringArtemis(Map
Map
2.2.5.2 参数含义
参数
名称
path
body
querys
accept
数据
类型
Map
String
Map
String
是否
必填
true
false
false
false
请求的路径,格式参照2.1.3.1 path参数说明。
JSON格式的请求参数,需转化为字符串。
请求url的查询参数,格式参照2.1.3.2 query参数说明。
指定客户端能够接收的数据类型,该参数传空时默认设置接收全部类型。
contentType String false
请求实体正文的媒体类型,该参数传空时设置为默认值application/text,该方法调用时传application/json。
描述
2.2.5.3 示例
public static void main(String[] args) {
="10.0.0.1:443"; //平台(nginx)IP和端口
="11111111"; //合作方key
ret ="AAAAAAAAAAAAA";//合作方Secret
final String getSecurityApi = "/artemis" + "/api/hello/v1/headget"; // 接口路径
Map
{
put("", getSecurityApi);
}
};
JSONObject jsonBody = new JSONObject();
("deviceCodes","-1");
("sex",-1);
("beginDate","2017-09-01 12:00:00");
("endDate","2017-09-12 12:00:00");
String body = String();
String result = StringArtemis(path, body, null,
null,"application/json");
n(result);
}
2.2.6 doPostStringArtemis(有header参数)
封装有header参数的post类型请求,请求body为json字符串。
2.2.6.1 方法签名
public static String doPostStringArtemis(Map
Map
2.2.6.2 参数含义
参数
名称
path
body
querys
accept
数据
类型
Map
Map
Map
String
是否
必填
true
false
false
false
请求的路径,格式参照2.1.3.1 path参数说明。
JSON格式的请求参数,需转化为字符串。
请求url的查询参数,格式参照2.1.3.2 query参数说明。
指定客户端能够接收的数据类型,该参数传空时默认设置接收全部类型。
contentType String false
请求实体正文的媒体类型,该参数传空时设置为默认值application/text,该方法调用时传application/json。
header Map false
请求的header参数,需设为键值对格式。
描述
2.2.6.3 示例
public static void main(String[] args) {
="10.0.0.1:443"; //平台(nginx)IP和端口
="11111111"; //合作方key
ret ="AAAAAAAAAAAAA";//合作方Secret
final String getSecurityApi = "/artemis" + "/api/hello/v1/headget"; // 接口路径
Map
{
put("", getSecurityApi);
}
};
Map
{
put("headpost", "sky-test");
}
};
JSONObject jsonBody = new JSONObject();
("deviceCodes","-1");
("sex",-1);
("beginDate","2017-09-01 12:00:00");
("endDate","2017-09-12 12:00:00");
String body = String();
String result = StringArtemis(path, body, null,
null,"application/json",head);
n(result);
}
2.2.7 doPostStringImgArtemis
封装使用POST 下载图片接口请求,请求body为json字符串。
2.2.7.1 方法签名
public static HttpResponse doPostStringImgArtemis(Map
Map
2.2.7.2 参数含义
参数
名称
path
body
querys
accept
数据
类型
Map
String
Map
String
是否
必填
true
false
false
false
请求的路径,格式参照2.1.3.1 path参数说明。
JSON格式的请求参数,需转化为字符串。
请求url的查询参数,格式参照2.1.3.2 query参数说明。
指定客户端能够接收的数据类型,该参数传空时默认设置接收全部类型。
contentType String false
请求实体正文的媒体类型,该参数传空时设置为默认值application/text,该方法调用时传application/json。
header Map false
请求的header参数,需设为键值对格式。
描述
2.2.7.3 示例
public static void main(String[] args) {
="10.0.0.1:443"; //平台(nginx)IP和端口
="11111111"; //合作方key
ret ="AAAAAAAAAAAAA";//合作方Secret
final String VechicleDataApi = ARTEMIS_PATH +"/api/acs/v1/event/pictures";
Map
{
put("",VechicleDataApi);
}
};
JSONObject jsonBody = new JSONObject();
("svrIndexCode", "30a80833-9ced-46c0-bf53-441a6121856e");
("picUri", "/pic?6ddz4a-=s72eb2*=ids1*=idp3*=ef8bi12i73=");
String body = String();
n("body: "+body);
HttpResponse
=StringImgArtemis(path,body,null,null,"application/json",null);
result
}
3 常见问题
暂无
4 修订记录
序号
1
2
变更时间
2019-09-24
2020-01-13
版本
V1.1.2
V1.1.3
变更人
张小芳14
张小芳14
审批人
张森5
张森5
变更说明
新建文档,提供基本接口说明
修改更新说明


发布评论