4 数据服务调用规范(SDK)

        4.1 调用说明

API调用有几个必备参数,都是需提前获取到的,除调用入口地址外,还包括AppKey、AppSecret、Access Token(或SessionKey)。AppKey、Appsecret在开放平台中创建应用时可获得(应用列表→应用信息页面获取);而Access Token则用通过client_credentials方式通过webservice请求取得;在取得这些数据后方能进行API 调用,调用相应的服务。应用只能调用生成token时分配服务的权限(即该应用申请的服务以及平台默认提供的数据服务)。其中token获取方式我们已在sdk中封装:token有效期12小时。

4.2 调用方式

将提 供的 sdk 相 关 jar 包 引入 工程 , 并将 相应 的配置 文 件conf.proeperties添加到工程的src目录下;按照如下方式调用即可:

组装获取token的OpenServiceClient

相关参数说明

  

注:青岛accessTokenURL为:http://www.qdedu.net/auth/oauth/token

  

   相关代码:

 String client_id = Config.getValue("client_id");

 String client_secret = Config.getValue("client_sercret");

 String baseURL= Config.getValue("baseURL");

 OpenServiceClient client = new OpenServiceClient(client_id,client_secret, baseURL);

  

   组装服务调用参数

  

  

   相关代码:

 //服务上下文(服务地址)

 String context = "/ceshifuwu";

 //服务版本号

 String version = "1.0";

 RequestParams openServiceParam = new RequestParams();

 openServiceParam.setContext(context);

 openServiceParam.setVersion(version);

 //以下三个参数设置为必须

 openServiceParam.addParam("clientName","测试应用");//业务系统名称代码,非必填

 openServiceParam.addParam("page","1");//起始页,必填

 openServiceParam.addParam("pegesize","3");//页面大小,必填

 openServiceParam.addParam("xxbsm","370209123");//服务的参数,根据服务说明设置

       注:如果请求一条数据,page为1,pagesize为1

  

   服务调用返回结果

 //服务调用返回结果

 String resultValue = client.sendRequest(openServiceParam); //转移服务结果

 ObjectMapper mapper = new ObjectMapper();

 Map jasonObject = (Map)mapper.readValue(resultValue, Map.class);

 String status = (String)jasonObject.get("status");

 //解析服务返回结果

 if ("success".equals(status)||StringUtils.isEmpty(status)) {//服务调用成功

 //输出结果

 System.out.println(jasonObject.get("result"));

 }else{

 System.out.println(jasonObject.get("error"));

 }

       

   返回结果示例

   

    成功:

 {

 "result": {

 "value": [

 {

 "XJFH": "20153****30120075",

 "XM": "李明"

 }

 ],

 "@odata.context": "/service/manager/metadata/RDB/b7e576016fc14f179b9ecc8c243adc14/SDEBM/XS_JBXX"

 }

 }

    失败:

 {

 "result": "{error=执行服务出错, context=/aichengshi/xjcx, error_description=建立连接出错,(url:netty://172.16.143.20:10090/com.inspur.idap.bds.manager.api.IDataServiceExecuteService?client=netty), version=1.0}",

 "status": "99999"

 }

       

   依赖的文件:

  

       

   config.properties

    

     配置文件:config.properties,放在src下,配置项:

 #服务授权用户编号

 client_id = 5458

 #服务授权用户

 client_sercret = 97716c14aaaabbb0a8fabbe4c8de3e2b

 #服务代理地址

 baseURL = http://www.sdei.edu.cn/auth/api

 #token 获取地址

 accessTokenURL= http://www.sdei.edu.cn/auth/oauth/token

       

   java类文件:

 //服务上下文(服务地址)

 String context = "/aichengshi/cxxjxx";

 //服务版本号

 String version = "1.0";

 OpenServiceClient client = new OpenServiceClient("5458","97716c14aaaabbb0a8fabbe4c8de3e2b","http://www.sdei.edu.cn/au th/api");

 RequestParams openServiceParam = new RequestParams();

 openServiceParam.setContext(context);

 openServiceParam.setVersion(version);

 //以下三个参数设置为必须

 openServiceParam.addParam("clientName","爱城市");//业务代码

 openServiceParam.addParam("start","0");//起始页

 openServiceParam.addParam("limit","1");//页面大小

 openServiceParam.addParam("XM",""李心晴"");//选填参数

 openServiceParam.addParam("SFZJH",""370103200412230123"");//选填参数

 //服务调用返回结果

 String resultValue = client.sendRequest(openServiceParam); //转移服务结果

 ObjectMapper mapper = new ObjectMapper();

 Map jasonObject = (Map)mapper.readValue(resultValue, Map.class); String status = (String)jasonObject.get("status"); //解析服务返回结果

 if ("success".equals(status)||StringUtils.isEmpty(status)) {//服务调用成功

 //输出结果

 System.out.println(jasonObject.get("result"));

 }else{

 System.out.println(jasonObject.get("error"));

 }

       

   示例程序:

    

        数据服务demo.zip