




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1智慧文旅信息系统数据接口规范24.2接口流程数据接口应使用基于HTTP/HTTPS协议的JSON格式的消息体传输数据。流程使用了“请求-Request”、“指示-Indication”、“响应-Response”、“确认-Confirm”四条服务原语,流程见图2。服务端图1接口服务流程4.3接口调用——请求:请求接口应按照RFC2616中规定的要求,使用Get、Post、Put、Delete等方法调用平台数据服务接口,请求接口将请求参数按照JSON格式封装后,在HTTP的Request消息中——响应:请求接口调用成功或失败,平台应将处理结果按照JSON格式封装后,放置在HTTP的Response消息中,返回给调用者。HTTP的Response消息应符合RFC2616中的要求。接口应满足以下条件:——采用UTF-8字符编码;——支持数据传输过程中的机密性与完整性保护;——接口数据应符合RFC4627中JSON格式要求。4.5接口基本分类按照数据共享交换的网络不同进行分类区分,可以将接口分为政务外网数据接口、公网数据接口2——政务外网数据接口:部署在政务外网上,用于政府机构和相关部门进行数据资源共享,以及按权限对社会进行开放的数据接口。——公网数据接口:部署在公网上,用于与智慧文旅系统进行数据交互的企业、第三方组织和公众的数据资源接口。5政务外网数据接口3DBXX/TXXXX—XXXX接口描述通过电子政务外网提供给政府机构和相关部门的数据接口,通过数据的一致性、可访问性和互操作性,以实现政府部门之间数据交换和共享,支持公共服务决策分析、信息查询以及协同工作等应用场景。接口方法接口应遵循HTTPREST风格:——GET:用于从服务器获取数据;——POST:用于向服务器提交数据;——PUT:用于向服务器更新已经存在的资源;——DELETE:用于删除服务器上的资源。认证和授权5.3.1验证规则如下:——由省交换平台提供唯一的应用码;——由省交换平台提供唯一的授权码用于签名;——由省交换平台归功唯一的SM4密钥,用于数据加解密;——加密算法采用SM4;——摘要算法采用MD5。5.3.2政务外网Digest认证访问接口时,需要在HTTP请求头中携带"Authorization","Authorization"的值对应格式(见表1)Algorithm=Algorithm,TimeStamp=TimeStamp,AccessKeyId=AccessKeyId,Signature=Signature注:TimeStamp不能与服务端时间相差超过5分钟。授权后为用户分配的AccessKeyID,服务端使用该通过计算得到的签名,参加签名的字段有:URL参数,TimeStapercentEncode("TimeStamp"4其中percentEncode指使用UTF-8字符集3.计算签名使用Algorithm对StringToSign进行签名,签名密钥为AccessKeyId对应的 ——响应时间<=30秒;——单个文件传输大小<=10M。说明0处理返回数据123结果解析错误4根据提示检查用户信息参数不正确参数类型不正确无权限访问5DBXX/TXXXX—XXXX败败败6DBXX/TXXXX—XXXX则7DBXX/TXXXX—XXXX败败插件名称不一致8DBXX/TXXXX—XXXX请求,必须进一步9DBXX/TXXXX—XXXX资源不存在通过公网(internet)提供给企业及第三方组织和公众使用的数据接口,支持数据数据类型否2否3否4否5时间戳否6否7签名否注:非空值待签名参数按照首字母以ASCII方式升序排列(ASCIIASC),对于相同字母则使用下个字母做二次排序,6.4.1采用Token认证方式,访问接口时需通过3步完成:——客户端通过用户ID(client_id)和密钥(client_secret)登录平台,获得Token;——Token有效期为2个小时,Token丢失后应重新获取Token。DBXX/TXXXX—XXXX接口内容接口内容包括但不限于:——景区门票信息;——酒店信息。接口约束接口约束主要如下:——响应时间<=20秒;——单个文件传输大小<=10M。消息状态码公网数据接口的服务状态码如表2:DBXX/TXXXX—XXXXDBXX/TXXXX—XXXX(规范性)政务外网Digest认证示例A.1认证代理信息接口服务中的代理信息如表A.1所示:表A.1接口服务代理信息值/api/v1.0/catlog?id=1&flag=true&typbf796c1d7081462a49042c0a71edAccessKeySecret8bf76c1d7081462a9042c0a7A.2Authorition请求头算法请求算法如下:importmons.codec.binary.Base64;importjavax.crypto.Mac;importjavax.crypto.spec.SecretKeySpec;importjava.io.UnsupportedEncodingException;import.URLDecoder;import.URLEncoder;importjava.text.SimpleDateFormat;importjava.util.Arrays;importjava.util.Calendar;importjava.util.Map;importjava.util.TreeMap;/***DataMall签名计算工具类*Createdbyw0592on2017/11/14.publicclassSignatureUtils{publicstaticfinalStringDMALL_HEAD_ALGORITHM="Algorithm";DBXX/TXXXX—XXXXpublicstaticfinalStringDMALL_ACCESSKEY_ID="AccessKeyId";publicstaticfinalStringDMALL_HEAD_SIGNATURE="Signature";publicstaticfinalStringDMALL_TIMESTAMP="TimeStamp";publicstaticfinalStringUTF_8="UTF-8";/***获取时间戳publicstaticStringgetUTCTime(){//1、取得本地时间:Calendarcal=Calendar.getInstance();//2、取得时间偏移量:intzoneOffset=cal.get(Calendar.ZONE_OFFSET);//3、取得夏令时差:intdstOffset=cal.get(Calendar.DST_OFFSET);//4、从本地时间里扣除这些差量,即可以取得UTC时间:cal.add(Calendar.MILLISECOND,-(zoneOffset+dstOffset));SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");returnsdf.format(cal.getTime());}/***签名计算方法**@paramaccessKeyId密钥id*@paramaccessKeySecret密钥secret*@paramhttpMethodhttp请求方法类型,目前支持POST,PUT,DELETE,GET四种*@paramqueryStringhttp请求参数,通常为?号之后的内容*@paramtimeStamp时间戳,格式yyyy-MM-ddHH:mm:ss,注意时区为UTC时区,如何获取utc时间,参看getUTCTime方法*注意:为防止重放,调用方传入的时间与服务器时间不能偏差超过5分钟**@return计算结果,该字段为String类型,上层需要把该字段放到httpheader中,其中key为Authorization,value为返回结果DBXX/TXXXX—XXXXpublicstaticStringgetAuthorization(StringaccessKeyId,StringaccessKeySecret,StringqueryString,StringhttpMethod,StringtimeStamp){/*构造计算签名的数据*/Stringsignature=getSignString(queryString,httpMethod,timeStamp,accessKeySecret);if(null==signature){returnnull;}StringBuilderauth=newStringBuilder();auth.append(DMALL_HEAD_ALGORITHM).append("=").append("HMAC-SHA256").append(",").append(DMALL_ACCESSKEY_ID).append("=").append(accessKeyId).append(",").append(DMALL_TIMESTAMP).append("=").append(timeStamp).append(",").append(DMALL_HEAD_SIGNATURE).append("=").append(signature);returnauth.toString();}privatestaticStringgetSignString(StringqueryString,StringhttpMethod,StringtimeStamp,StringaccessKeySecret){StringstrToSign=null;try{if(null!=queryString){queryString=URLDecoder.decode(queryString,UTF_8);}strToSign=buildCanonicalString(queryString,httpMethod,timeStamp);}catch(UnsupportedEncodingExceptione){returnstrToSign;}returnsignWithHmac(strToSign,accessKeySecret);}privatestaticStringbuildCanonicalString(Stringparameters,StringhttpMethod,StringtimeStamp){StringBuilderbuilder=newStringBuilder();builder.append(httpMethod).append("&");try{builder.append(URLEncoder.encode("/",UTF_8)).append("&");if(null!=timeStamp){DBXX/TXXXX—XXXXbuilder.append(URLEncoder.encode(timeStamp,UTF_8)).append("&");}}catch(UnsupportedEncodingExceptione){e.printStackTrace();}if(null!=parameters){StringqueryString=parameters;//去除#后面部分intfragIdx=parameters.indexOf('#');if(fragIdx>=0){queryString=parameters.substring(0,fragIdx);}builder.append(buildqueryString(queryString));}returnbuilder.toString();}privatestaticStringbuildqueryString(StringqueryString){Map<String,String>params=getQueryStringMap(queryString);StringBuilderbuilder=newStringBuilder("");if(params.size()>0){String[]names=params.keySet().toArray(newString[params.size()]);Arrays.sort(names);charseparator='&';for(inti=0;i<names.length;i++){Stringname=names[i];builder.append(separator);}builder.append(name);StringparamValue=params.get(name);if(paramValue!=null&¶mValue.length()>0){builder.append("=").append(paramValue);}DBXX/TXXXX—XXXX}}StringcononiStr="";try{cononiStr=URLEncoder.encode(builder.toString(),UTF_8);}catch(Exceptione){e.printStackTrace();}returncononiStr;}privatestaticMap<String,String>getQueryStringMap(StringqueryString){Map<String,String>params=newTreeMap<String,String>();if(null!=queryString){String[]splits=queryString.split("&");for(inti=0;i<splits.length;i++){Stringquery=splits[i];String[]tmpSplit=query.split("=");if(tmpSplit.length>=2){Stringname=tmpSplit[0];Stringvalue=tmpSplit[1];params.put(name,value);}}}returnparams;}privatestaticbyte[]hmacsha256Signature(byte[]data,byte[]key){try{SecretKeySpecsigningKey=newSecretKeySpec(key,"HmacSHA256");Macmac=Mac.getInstance("HmacSHA256");mac.init(signingKey);returnmac.doFinal(data);}catch(Exceptione){DBXX/TXXXX—XXXXe.printStackTrace();retu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年档案管理常见问题试题及答案
- 力学中的压强问题分析试题及答案
- 2024年税务师智能学习规划试题及答案
- 九年级道德与法治下册 第三单元 走向未来的少年 第七课 从这里出发 第2框 走向未来教学实录+教学反思 新人教版
- 档案信息化的实施案例试题及答案
- 档案管理的风险防控措施试题及答案
- 2024年系统分析师常见考题及答案
- 2024年多媒体应用设计课题研究题及答案
- 技术员的述职报告
- 二级建造师考试形式分析试题及答案
- 数学八年级下册专题16.8 二次根式章末测试卷(拔尖卷)(人教版)(学生版)
- 35770-2022合规管理体系-要求及使用指南标准及内审员培训教材
- DZ-T 0270-2014地下水监测井建设规范
- 贵州省生态文明教育读本(高年级) -教案(教学设计)
- 四渡赤水(课件)
- 1到六年级古诗全部打印
- 成品出货检验报告模板
- 《中药药剂学》课件-第八章 液体制剂
- 消化治疗内镜技术操作规范2023版
- 课间操考核评比方案含打分标准打分表
- 元音字母发音规则
评论
0/150
提交评论