Quick Start
准备工作
SDK依赖
- JRE发行版本 需要 JDK1.8 或更高
- 日志门面采用SLF4J 版本为 1.7.36
- 项目内部使用了Guava ( Google Core Libraries for Java ) 版本为31.1-jre
- 需要依赖Json序列化组件及Http客户端组件
安装
SDK的Maven GroupID是 net.linksfield.cube
, 以及 artifactID是 partner-sdk-core
SDK需要依赖于一个Json序列化组件及http客户端组件, SDK将根据引用的组件不同, 自动采用对应的实现方案
目前Json序列化方案的实现支持:
目前Http客户端的实现支持:
不建议使用HttpClient4, 由于一些历史原因, 目前HttpClient4需要被配置为跳过SSL检查
使用Maven添加依赖, 示例代码:
:::caution
version值为示例,不同的API支持的最低版本SDK不同,建议使用最新版本SDK。
SDK发布记录:Release log
:::
<dependency>
<groupId>net.linksfield.cube</groupId>
<artifactId>partner-sdk-core</artifactId>
<version>1.0.6</version>
</dependency>
<!--
采用HttpClient5 作为Http客户端实现
如果项目中已包含HttpClient引用, 则无需重复引用
-->
<dependency>
<groupId>org.apache.httpcomponents.client5</groupId>
<artifactId>httpclient5</artifactId>
<version>5.2</version>
</dependency>
<!-- 或者可以使用以下任意的实现替换HttpClient4
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>4.10.0</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5</version>
</dependency>
-->
<!-- 采用Jackson 作为Json序列化实现 -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.13.3</version>
</dependency>
使用Gradle添加依赖, 示例代码:
dependencies {
implementation("net.linksfield.cube:partner-sdk-core:1.0.0")
implementation("org.apache.httpcomponents:httpclient:4.5")
implementation("com.fasterxml.jackson.core:jackson-databind:2.13.3")
}
快照和文档
快照版本将从 master
分支构建, 使用版本号 HEAD-SNAPSHOT
文档地址: SDK文档
链接
简单使用
以下代码演示了如何调用获取Sim状态的接口
// 可以通过设置系统变量来更改SDK访问的服务端点, 这里用代码方式演示了变更环境为UAT
// 当前可用的环境值有: uat / prod, 默认为: prod
// 可以通过Jar的运行变量参数进行设置 java -jar -Dlinksfield.cube.partner.env=uat YOUR_APPLICATION.jar
System.setProperty("linksfield.cube.partner.env","uat");
// 注册一个SDK客户端
PartnerClient client = new PartnerClient(ACCESS_KEY, PRIVATE_KEY);
// 构建请求参数
SimStatus simStatus = new SimStatus(1, "SIM_ID", "status");
// 调用SDK发送Http请求, 并返回响应内容
ResponseBody responseBody = client.v2().sim().simStatus(simStatus);
// dosomething
System.out.println(responseBody);
事件通知
SDK在一些阶段将通过事件通知发送处理情况, 某些情况下可以用来进行特定的操作
System.setProperty("linksfield.cube.partner.env","uat");
// SDK在一些阶段将通过事件通知发送处理情况, 某些情况下可以用来进行特定的操作
// 注册一个SDK初始化事件 将返回系统的常量参数
Events.register(EventType.SdkInit, e -> {
System.out.println("Event: " + e.getType());
SdkInitEvent event = (SdkInitEvent) e;
System.out.println(event.getAccessKey());
System.out.println(event.getPrivateKey());
System.out.println();
});
// 注册一个签名处理事件 每次SDK对请求进行签名时将返回对应的待签名数据
Events.register(EventType.Signature, e -> {
System.out.println("Evnet: " + e.getType());
System.out.println(e.getSource());
System.out.println(((DomainSignatureEvent)e).getStringToSign());
System.out.println(((DomainSignatureEvent)e).getTimestamp());
System.out.println();
});
// 注册Http请求事件 此事件在Http发送请求之前产生
Events.register(EventType.HttpRequest, e -> {
System.out.println("Event: " + e.getType());
HttpRequest request = (HttpRequest) e.getSource();
System.out.println(request.getUrl());
System.out.println(request.getHeaders());
System.out.println(request.getBodyString());
System.out.println();
});
// 注册Http响应事件 此事件在Http发送请求获取响应之后产生
Events.register(EventType.HttpResponse, e -> {
System.out.println("Event: " + e.getType());
HttpResponse request = (HttpResponse) e.getSource();
System.out.println(request.getHttpStatus());
System.out.println(request.getHeaders());
try {
System.out.println(request.getBodyResource().asCharSource(StandardCharsets.UTF_8).read());
} catch (IOException ex) {
throw new RuntimeException(ex);
}
System.out.println();
});
Events.start();
PartnerClient client = new PartnerClient(ACCESS_KEY, PRIVATE_KEY);
SimStatus simStatus = new SimStatus(1, "SIM_ID", "status");
ResponseBody responseBody = client.v2().sim().simStatus(simStatus);
System.out.println(responseBody);
最后修改时间: 1 年前