主题
Java SDK
简介
适用于 Java 语言、JDK 版本 1.6 及以上的开发环境。
下载地址
pom.xml
提示
CASP SDK暂不支持通过maven仓库下载,若使用项目maven管理依赖包,可参照如下示例引入本地jar包。
若您的项目中已经包含了jackson或fastjson的依赖,则仅需要引用CASP SDK即可,若不存在,则需要自行引用jackson或fastjson的依赖,CASP SDK会自动适配,更多信息详见json转换器。
xml
<?xml version="1.0" encoding="UTF-8"?>
<project>
<dependencies>
<dependency>
<groupId>com.wisedu.casp</groupId>
<artifactId>casp-sdk</artifactId>
<version>latest</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/casp-sdk-java_20260602.jar</systemPath>
</dependency>
</dependencies>
<build>
<plugins>
<!-- 使用springboot则添加如下配置 -->
<plugin>
<groupId>com.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<includeSystemScope>true</includeSystemScope>
</configuration>
</plugin>
</plugins>
</build>
</project>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
示例代码
提示
示例中的BASE_URL参数为网关基础地址,非完整的具体的API的地址,在实际使用中,SDK会自动根据不同的请求拼接相应的接口path路径,无需开发者额外处理。
普通调用示例
java
// 创建客户端
Client client = new DefaultClient(BASE_URL, APP_ID, APP_SECRET);
// 创建请求对象
TokenGatewayAccessTokenRequest request = new TokenGatewayAccessTokenRequest();
request.setAppId(APP_ID);
request.setAppSecret(APP_SECRET);
Response response = client.execute(request);
//调用成功,则处理业务逻辑
if(response.isSuccess()){
//.....
}1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
在上述示例中使用获取AccessToken请求作为演示,实际使用中,当接口需要上送AccessToken信息时,默认的Client实现会自动触发获取AccessToken信息,但是开发者需要选择合适的Token存储器进行Token信息的缓存,默认情况下,Client会将信息存储在内存中,在多机部署情况下,不建议使用该种方式,会导致不同机器对的Token信息不一致,此时开发者应实现TokenStore接口,自定义Token缓存的读写逻辑。
自定义TokenStore示例(推荐)
自定义TokenStore
java
public class CustomTokenStore extends DefaultTokenStore {
public CustomTokenStore(Client client) {
super(client);
}
@Override
protected String getTokenFromCache() {
// 从缓存中获取Token
return null;
}
@Override
protected void setTokenCache(TokenGatewayAccessTokenResponse response) {
// 将Token存入缓存
}
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
DefaultTokenStore实现了TokenStore接口,可以简化Token的存取逻辑,如果开发者希望完全自定义可以直接实现TokenStore接口。
构建Client
java
// 创建客户端
DefaultClient client = new DefaultClient(BASE_URL, APP_ID, APP_SECRET);
// 创建TokenStore
client.setTokenStore(new CustomTokenStore(client));
// 创建请求对象
TokenGatewayAccessTokenRequest request = new TokenGatewayAccessTokenRequest();
request.setAppId(APP_ID);
request.setAppSecret(APP_SECRET);
Response response = client.execute(request);
//调用成功,则处理业务逻辑
if(response.isSuccess()){
//.....
}1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
提示
当请求API需要上送公共请求头信息时,开发者无需额外处理,Client会自动添加相关信息。Client 是线程安全的,实际使用可使用单例,无需重复创建。
高性能实践
性能相关参数设置
注意
实现高并发/高性能需结合业务场景,通过反复压测调优参数,本文只给出与性能相关的参数的设置示例,无法给出参数的最优值。
java
DefaultClient client = new DefaultClient(BASE_URL, APP_ID, APP_SECRET);
//连接超时,单位:毫秒,默认10000
client.setConnectTimeout(10000);
//读取超时,单位:毫秒,默认10000
client.setReadTimeout(10000); 1
2
3
4
5
2
3
4
5
JSON转换器
为了最大程度降低CASP SDK对现有项目的影响,CASP SDK仅需要最基本的JSON序列化包的依赖,且内部支持了jackson和fastjson两种实现,若您的项目中已经包含了相关的依赖包,则不需要做任何处理,CASP SDK会自行尝试加载,顺序为fastjson > jackson。
若您希望改变这种顺序,也可以直接指定JSON转换器,示例如下:
java
DefaultClient client = new DefaultClient(BASE_URL, APP_ID, APP_SECRET);
// 指定jackson作为转换器
client.setConverter(new JacksonConverter());
// 指定fastjson作为转换器
// client.setConverter(new FastjsonConverter());1
2
3
4
5
2
3
4
5
自定义JSON转换器
若您的应用中使用其它的JSON序列化实现,则可以通过自定义JSON转换器来保证CASP SDK正常工作。
java
/**
* JSON转换器
*/
public interface JSONConverter {
<T> T readValue(InputStream in, Class<T> clazz) throws Exception;
void writeValue(OutputStream out, Object obj) throws Exception;
}1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
自定义JSON序列化转换器只需实现JSONConverter接口并实现相应方法后,使用DefaultClient#setConverter可完成转换器的设置。

