# dss-java-sdk
**Repository Path**: ougy/dss-java-sdk
## Basic Information
- **Project Name**: dss-java-sdk
- **Description**: Fadada DSS Java SDK
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: 1.0.3
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2024-09-15
- **Last Updated**: 2024-09-15
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# FASC DSS Java SDK v1.0 说明
# 简介
欢迎使用法大大开发者工具套件(SDK),DSS Java SDK 是法大大 DSS API接口文档的配套工具。
SDK已上传至中央仓库,直接通过Maven安装FASC DSS Java SDK:
```xml
io.gitee.fadada-cloud
dss-java-sdk
1.0.3.1
```
直接引入Jar,下载发行版:
https://gitee.com/fadada-cloud/dss-java-sdk/releases/tag/V1.0.3.1
# 依赖环境
JAVA JDK 版本: JDK 11
JDK1.8请联系对接人提供
注意:法大大DSS系统需要已安装并激活启动。(有疑问可联系法大大项目对接人)
# 安装说明
## 引用jar包
引入sdk 所依赖的jar包,提供的方法调用DSS API服务。
```xml
org.slf4j
slf4j-log4j12
2.1.0-alpha1
org.bouncycastle
bcpkix-jdk15on
1.68
org.apache.httpcomponents.client5
httpclient5
5.3.1
com.google.code.gson
gson
2.9.1
org.projectlombok
lombok
1.18.34
provided
```
## 始化客户端
系统参数配置说明
```properties
# DSS API部署在本地服务器地址
serverUrl=https://www.xxx.com
# DSS本地服务应用ID(DSS控制台系统 > 集成中心 > 系统集成 > 应用)
appId=765764
# DSS本地服务应用密钥
appSecret=lqdnQUZw3u5rQCLznHz7fEvuzdjhs8Es
# 签名算法类型:HMAC-SHA256、SM3
signType=HMAC-SHA256
# 是否启用响应GZIP压缩
useGzipEncoding=false
# http配置(HttpConfig参数配置说明)
httpConfig=
```
HttpConfig参数配置说明
```properties
# 网络请求超时时间,默认15秒
connectTimeout=15000
# 网络请求读取超时时间,默认30秒
readTimeout=30000
# 每路由(域名)最大的连接数
defaultMaxPerRoute=
# socket最大的连接数
defaultSocketMaxTotal=
# http是否打开代理
proxyFlag=false
# http代理地址
proxyHost=
# http代理端口号
proxyPort=
```
## 业务方法调用
```java
import com.dss.sdk.api.factory.DssApiSdkFactory;
import com.dss.sdk.api.req.FileDownloadRequest;
import com.dss.sdk.api.req.FileGetFileInfoRequest;
import com.dss.sdk.api.req.FileUploadRequest;
import com.dss.sdk.api.resp.FileGetFileInfoResponse;
import com.dss.sdk.enums.MimeTypeEnum;
import com.dss.sdk.exception.ApiException;
import com.dss.sdk.file.FileItem;
import com.dss.sdk.response.DssEntityResponse;
import com.dss.sdk.response.DssResponse;
import com.dss.sdk.utils.json.GsonUtil;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* @author Fadada
*/
public class DssApiClentDemo {
private static final String host = "https://xxx.fadada.com";
private static final String appId = "765764";
private static final String appSecret = "lqdnQUZw3u5rQCLznHz7fEvuzdjhs8Es";
private static final String filePath = "C:\\temp\\d.pdf";
public static void main(String[] args) throws Exception {
//初始化
DssApiSdkFactory.init(host, appId, appSecret);
//上传文件
uploadFile();
//查询
getFileResult();
//下载文件
downFile();
}
public static void uploadFile() throws ApiException {
FileUploadRequest request = new FileUploadRequest();
request.setFileName("d.pdf");
request.setFile(new FileItem(filePath));
//发起请求
DssResponse response = DssApiSdkFactory.fileTransferClient.filePreUpload(request);
System.out.println(GsonUtil.toJsonStr(response));
}
public static void getFileResult() throws ApiException {
FileGetFileInfoRequest request = new FileGetFileInfoRequest();
request.setFileId("466298555308347392_cpdf");
//发起请求
DssResponse response = DssApiSdkFactory.fileTransferClient.getFileInfo(request);
System.out.println(GsonUtil.toJsonStr(response));
}
public static void downFile() throws ApiException, IOException {
FileDownloadRequest request = new FileDownloadRequest();
request.setFileId("466298555308347392_cpdf");
//发起请求
DssResponse response = DssApiSdkFactory.fileTransferClient.downloadStream(request);
if (response.isSuccess()) {
MimeTypeEnum type = MimeTypeEnum.getByContentType(response.getData().getContentType());
switch (type) {
case PDF:
File file = new File(System.getProperty("java.io.tmpdir") + File.separator + "test.pdf");
if (file.exists()) {
file.delete();
} else {
file.createNewFile();
}
try (BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file))) {
bos.write(response.getData().getContent());
bos.flush();
System.out.println(file.getPath());
}
break;
}
}
}
}
```
手动初始化客户端
```java
DssApiSdkFactory.init(host, appId, appSecret);
FileUploadRequest request = new FileUploadRequest();
request.setFileName("d.pdf");
request.setFile(new FileItem(filePath));
//发起请求
DssResponse response = DssApiSdkFactory.fileTransferClient.filePreUpload(request);
```
更多示例详见demo代码(https://gitee.com/fadada-cloud/dss-java-sdk/blob/master/src/main/java/com/dss/demo/DssApiClentDemo.java)
## 扩展说明
当SDK版本不匹配DSS系统版本时(API接口SDK不满足),可通过扩展实现自定义的请求接口、请求参数、响应结果解析等。
1、自定义接口请求Request,继承BaseDssRequest。
```java
public class GetAccountRequest extends BaseDssRequest {
/** 用户在当前系统的唯一标识 */
@ValidField(required = true)
private String accountId;
public String getAccountId() {
return accountId;
}
public void setAccountId(String accountId) {
this.accountId = accountId;
}
}
```
2、自定义接口响应Response。
```java
public class GetAccountResponse {
private List data;
public List getData() {
return data;
}
public void setData(List data) {
this.data = data;
}
}
```
3、自定义接口响应Data
```java
public class AccountInfo {
/**
* 用户在当前系统的唯一标识
*/
private String accountId;
public String getAccountId() {
return accountId;
}
public void setAccountId(String accountId) {
this.accountId = accountId;
}
}
```
4、自定义请求Client
```java
public class GetAccountClient {
private static final Logger log = LoggerFactory.getLogger(GetAccountClient.class);
public DssClientService clientService;
public GetAccountClient(DssClientService clientService) {
this.clientService = clientService;
}
public DssResponse getAccount(GetAccountRequest request) throws ApiException {
return clientService.execute(request, "/api/get/account", GetAccountResponse.class);
}
}
```
5、自定义接口请求
```java
// 创建业务Client
DssClientService service = new DssClientService(host, appId, appSecret);
GetAccountClient dssClient = new GetAccountClient(service);
// 请求参数
GetAccountRequest request = new GetAccountRequest();
request.setAccountId("418018522430435328");
// 接口响应
DssResponse response = dssClient.getAccount(request);
if(response.isSuccess()){
// 响应Data
List data = response.getData();
}
```