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依赖坐标:

artemis-http-client

1.1.3

开发前请先导入包或通过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 path = new HashMap(2) {

{

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 querys = new HashMap();//post请求的查询参数

("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 path, Map querys, String

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 path = new HashMap(2) {

{

put("", getSecurityApi);

}

};

Map querys = new HashMap();//get请求的查询参数

("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 path, Map querys, String

accept, String contentType, Map header);

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 path = new HashMap(2) {

{

put("", getSecurityApi);

}

};

Map head = new HashMap(2) { //get请求的header参数

{

put("headget", "sky-test");

}

};

Map querys = new HashMap();//get请求的查询参数

("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 path, Map

paramMap, Map querys, String accept, String contentType);

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 path = new HashMap(2) {

{

put("", getSecurityApi);

}

};

Map querys = new HashMap();//post请求的查询参数

("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 path, Map

paramMap, Map querys, String accept, String contentType, 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 path = new HashMap(2) {

{

put("", getSecurityApi);

}

};

Map head = new HashMap(2) { //post请求的header参数

{

put("headpost", "sky-test");

}

};

Map querys = new HashMap();//post请求的查询参数

("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 path, String body,

Map querys, String accept, String contentType);

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 path = new HashMap(2) {

{

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 path, String body,

Map querys, String accept, String contentType, Map header) ;

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 path = new HashMap(2) {

{

put("", getSecurityApi);

}

};

Map head = new HashMap(2) { //post请求的header参数

{

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 path, String body,

Map querys, String accept, String contentType, Map header);

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 path = new HashMap(2){

{

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

变更说明

新建文档,提供基本接口说明

修改更新说明