Java-SDK使用介绍

导入工程

下载Java版SDK,包含适用于jdk5、jdk6、jdk7、jdk8这四个版本的sdk,我们推荐使用jdk8版本的SDK。下面的示例是以jdk8版本的SDK为基础,其他版本的SDK的使用参照执行。

Java SDK包中包含以下jar包:

1571208939128

在第三方系统中,需要将上述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();
        }
    }
}

results matching ""

    No results matching ""