




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 專業技術秘密保護合同
- 與日歷有關的課件模板
- 上海邦德職業技術學院《水泵及水泵站》2023-2024學年第二學期期末試卷
- 云南省曲靖市師宗縣部分校2025屆小升初模擬數學測試卷含解析
- 宣城市廣德縣2025屆小學六年級第二學期小升初數學試卷含解析
- 寧夏大學新華學院《即興伴奏Ⅰ》2023-2024學年第一學期期末試卷
- 江西省九江市名校2025屆初三第二次質量考評英語試題試卷含答案
- 石家莊鐵路職業技術學院《數字插畫設計》2023-2024學年第二學期期末試卷
- 山東省臨朐市重點達標名校2025屆中考化學試題壓軸試卷含解析
- 南華大學船山學院《醫學哲學》2023-2024學年第一學期期末試卷
- 鋪貨協議合同
- 物資設備管理試題及答案
- 車間生產追溯管理制度
- 2025年4月12日衢州事業單位及市直遴選(選調)筆試真題及答案解析
- 2025年CFA特許金融分析師考試全真模擬試題與解析
- 非上市公司的期權激勵方案兩篇
- 福建省能源石化集團有限責任公司招聘筆試真題2024
- 專業稅務顧問服務合同范本
- 第8課《集字練習》課件-【知識精研】六年級上冊書法北師大版
- DB37-T 5312-2025 《建筑施工安全防護設施技術標準》
- 基于Scrum的軟件產品自動化測試框架研究
評論
0/150
提交評論