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"));
}
示例程序: