Java-SDK使用介绍
导入工程
下载Java版SDK,包含适用于jdk5、jdk6、jdk7、jdk8这四个版本的sdk,我们推荐使用jdk8版本的SDK。下面的示例是以jdk8版本的SDK为基础,其他版本的SDK的使用参照执行。
Java SDK包中包含以下jar包:
在第三方系统中,需要将上述jar包导入至相关的Java工程中,具体的导入过程在此不再赘述。
示例程序说明
对于Java版SDK,我们提供了两个示例程序,一个是获取集成项目列表数据,一个是获取磅单数据,结合集成开发流程,分别给出示例程序的说明。GYS系统开放接口的具体api地址、请求数据格式、返回数据格式的规范,见开放接口
示例程序一:获取集成项目列表
该实例程序的完整代码在 Java示例程序 中的sdk-demo项目中。
import com.alibaba.fastjson.JSONObject;
import com.glodon.cloudt.rest.client.RestServiceClient;
import com.glodon.cloudt.rest.client.data.HmacRestAuthInfo;
import com.glodon.cloudt.rest.client.data.RestResponseInfo;
import com.glodon.cloudt.rest.client.exception.AuthenticateException;
import com.glodon.cloudt.rest.client.exception.InvalidUriException;
import com.glodon.cloudt.rest.client.exception.NoAuthenticateException;
import com.glodon.cloudt.rest.client.impl.HmacRestServiceClient;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class Main {
public static void main(String[] args) {
testDemo();
}
public static void testDemo() {
try {
/**----------------准备 -------------------*/
//第1步:下载授权文件
//第2步:获取SDK
/** ------------ 授权认证 --------------*/
//第3步:创建客户端实例
RestServiceClient serviceClient = HmacRestServiceClient.getInstance();
//第4步:加载/验证授权文件
//4.1构建认证信息
HmacRestAuthInfo restAuthInfo = new HmacRestAuthInfo();
//4.2设置授权文件路径
restAuthInfo.setLicPath("F:\\auth.lic");
//4.3权限认证
serviceClient.authenticate(restAuthInfo);
/** ------------ 拼接请求地址 --------------*/
//第5步:获取授权文件关联的GYS系统地址hostAddress
String hostAddress = serviceClient.getRestRootAddress();
//第6步:设置请求接口的URI地址apiURI(以获取集成项目列表信息为例)
String apiURI = "/api/inspection/v1.0/project/getTenantHasCodeProject";
//第7步:拼装完整的请求网址
String fullURL = hostAddress + apiURI;
//第8步:请求数据准备(本例中为从GYS系统获取数据,无需进行请求数据的准备)
//第9步:发送请求,用来推送/获取数据
RestResponseInfo restResponseInfo = serviceClient.get(fullURL);
/** ------------ 处理请求返回结果 --------------*/
if (restResponseInfo.isSuccess()) {
//请求成功:
//第10步:处理请求结果(第三方系统自行处理)
System.out.println(restResponseInfo.getStringContent());
} else {
//请求失败:
//第11步:根据返回结果排查失败原因(数据原因第三方系统自行处理)
}
} catch (AuthenticateException e) {
e.printStackTrace();
} catch (InvalidUriException e) {
e.printStackTrace();
} catch (NoAuthenticateException e) {
e.printStackTrace();
}
}
}
示例程序二:获取收料磅单
该实例程序的完整代码在 Java示例程序 中的sdk-bill-demo项目中。
import com.alibaba.fastjson.JSONObject;
import com.glodon.cloudt.rest.client.RestServiceClient;
import com.glodon.cloudt.rest.client.data.HmacRestAuthInfo;
import com.glodon.cloudt.rest.client.data.RestResponseInfo;
import com.glodon.cloudt.rest.client.exception.AuthenticateException;
import com.glodon.cloudt.rest.client.exception.InvalidUriException;
import com.glodon.cloudt.rest.client.exception.NoAuthenticateException;
import com.glodon.cloudt.rest.client.impl.HmacRestServiceClient;
import java.util.List;
public class Main {
private static RestServiceClient serviceClient;
public static void main(String[] args) {
try {
/**----------------准备 -------------------*/
//第1步:下载授权文件
//第2步:获取SDK
/** ------------ 授权认证 --------------*/
//第3步:创建客户端实例
serviceClient = HmacRestServiceClient.getInstance();
//第4步:加载/验证授权文件
//4.1构建认证信息
HmacRestAuthInfo restAuthInfo = new HmacRestAuthInfo();
//4.2设置授权文件路径(注意,每个授权文件只能用在一台电脑上,不能复用)
restAuthInfo.setLicPath("F:\\auth.lic");
//4.3权限认证
serviceClient.authenticate(restAuthInfo);
//获取磅单数据,里面包含了第5~第13步的请求
getBillData("1456353", "20190310101010000");
} catch (AuthenticateException e) {
e.printStackTrace();
}
}
public static void getBillData(String projectId, String beginTimestamp) {
try {
//url拼接
StringBuilder urlBuffer = new StringBuilder();
/** ------------ 拼接请求地址 --------------*/
//第5步:获取授权文件关联的GYS系统地址hostAddress
String hostAddress = serviceClient.getRestRootAddress();
urlBuffer.append(serviceClient.getRestRootAddress());
//第6、7步:设置请求接口的URI地址apiURI(收料磅单数据接口)、设置自定义请求参数,拼接完整的请求地址
urlBuffer.append("/gys/inspection-api-service/integrate-v2/getSLlist");
urlBuffer.append("?projectId=").append(projectId);
urlBuffer.append("&beginTimestamp=").append("#beginTimestamp#");
//第8步:请求数据准备(本例中为从GYS系统获取数据,无需进行请求数据的准备)
//请求完成标志
boolean flag = true;
while (flag) {
String url = urlBuffer.toString();
url = url.replace("#beginTimestamp#", beginTimestamp);
//第9步:发送请求
RestResponseInfo restResponseInfo = serviceClient.get(url);
if (restResponseInfo.isSuccess()) {
//请求成功:
//第10步:处理请求结果(第三方系统自行处理)
String resultStr = restResponseInfo.getStringContent();
//json字符串转为MAP
JSONObject resultObj = JSONObject.parseObject(resultStr);
//解析返回值
JSONObject resultData = (JSONObject) resultObj.get("data");
//将返回值对象转为对象进行解析
ResultVo resultVo = resultData.toJavaObject(ResultVo.class);
List<BillBean> bills = resultVo.getBills();
String maxTimestamp = resultVo.getMaxTimestamp();
//TODO,调用方对磅单进行处理
for (BillBean bill : bills) {
//System.out.println(bill.toString());
}
//判断数据结束的依据
// 1、获取磅单接口每次查询磅单时间跨度为入参时间往后三个月
// 2、返回结果为0时,只表示入参往后推三个月没有磅单数据
// 3、当开始请求时间==数据最大时间,且本次返回数据size=0时,表示已取到全部磅单数据
if (bills.size() <= 0 && beginTimestamp == maxTimestamp) {
flag = false;
} else {
beginTimestamp = maxTimestamp;
// TODO 第12步:保存最新的时间戳到数据库,作为下次请求的开始时间
}
} else {
flag = false;
//请求失败:
//第11步:根据返回结果排查失败原因(数据原因第三方系统自行处理)
}
}
} catch (InvalidUriException e) {
e.printStackTrace();
} catch (NoAuthenticateException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}