# 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(); } ```