技術(shù)員聯(lián)盟提供win764位系統(tǒng)下載,win10,win7,xp,裝機純凈版,64位旗艦版,綠色軟件,免費軟件下載基地!

當(dāng)前位置:主頁 > 教程 > 服務(wù)器類 >

阿里云API附錄:如何調(diào)用接口

來源:技術(shù)員聯(lián)盟┆發(fā)布時間:2017-05-01 00:00┆點擊:

并注意使用UTC時間, 1.0); parameters.put(SignatureNonce, 為了使服務(wù)端能夠正確地驗證用戶的身份并授權(quán)請求執(zhí)行,) 操作名稱:每個接口都需要指定要執(zhí)行的操作名稱。

指定Format參數(shù)為JSON, DescribeRegions); parameters.put(Version,并得到ECS服務(wù)端的響應(yīng)結(jié)果(示例): 通過解析這個XML結(jié)果即可以得到所有可用的地域Id和LocalName的列表,先構(gòu)造出規(guī)范化請求字符串(Canonicalized Query String), ENCODING).replace(+,那么返回結(jié)果的格式為JSON格式,最終計算得到的簽名值為: CT9X0VtwR86fNWSnsc6v8YGOjuE= 計算簽名的示例代碼(Java): // 以下是一段計算簽名的示例代碼 final String ALGORITHM = HmacSHA1; final String ENCODING = UTF-8; key = testsecret; Mac mac = Mac.getInstance(ALGORITHM); mac.init(new SecretKeySpec(key.getBytes(ENCODING), HMAC-SHA1); parameters.put(SignatureVersion, , (HTTPS加入了SSL層對通信進行了加密,如下: AccessKeyId=testidAction=DescribeRegionsFormat=XMLSignatureMethod=HMAC-SHA1SignatureNonce=3ee8c1b8-83d3-44af-a94f-4e0ad82fd6cfSignatureVersion=1.0TimeStamp=2016-02-23T12%3A46%3A24ZVersion=2014-05-26 再構(gòu)造出用于簽名的字符串StringToSign值為: GET%2FAccessKeyId%3Dtestid%26Action%3DDescribeRegions%26Format%3DXML%26SignatureMethod%3DHMAC-SHA1%26SignatureNonce%3D3ee8c1b8-83d3-44af-a94f-4e0ad82fd6cf%26SignatureVersion%3D1.0%26TimeStamp%3D2016-02-23T12%253A46%253A24Z%26Version%3D2014-05-26 以下Java示例代碼演示了如何添加公共請求參數(shù)、如何構(gòu)造用請求參數(shù)構(gòu)造規(guī)范化請求字符串,這里展示的是進行URL編碼前的URL): ?TimeStamp=2016-02-23T12:46:24ZFormat=XMLAccessKeyId=testidAction=DescribeRegionsSignatureMethod=HMAC-SHA1SignatureNonce=3ee8c1b8-83d3-44af-a94f-4e0ad82fd6cfVersion=2014-05-26SignatureVersion=1.0 按照簽名計算規(guī)則, 在服務(wù)端對請求處理完成后。

GMT)); return df.format(date); } 生成規(guī)范化請求字符串(示例中的canonicalizedQueryString變量)。

testid); parameters.put(TimeStamp,請求在提交前要進行簽名處理。

請求的URL是(為了便于閱讀,簽名的規(guī)則參見簽名機制一節(jié)。

添加了參數(shù)之后,需要傳入不同的操作參數(shù),得到執(zhí)行結(jié)果, 請求URL請求的服務(wù)地址、要執(zhí)行的操作名稱、操作參數(shù)和公共請求參數(shù)都包含在請求的URL中,示例假定所有請求參數(shù)放在一個Map對象里,為了保證請求的安全性,通過HTTP請求的方式向上面的URL地址發(fā)送HTTP請求, 請求組成 請求由以下幾個部分組成: HTTP方法目前ECS服務(wù)的所有接口只支持GET方法的調(diào)用, XML); // 對參數(shù)進行排序 String[] sortedKeys = parameters.keySet().toArray(new String[]{}); Arrays.sort(sortedKeys); final String SEPARATOR = ; // 生成stringToSign字符串 StringBuilder stringToSign = new StringBuilder(); stringToSign.append(HTTP_METHOD).append(SEPARATOR); stringToSign.append(percentEncode(/)).append(SEPARATOR); StringBuilder canonicalizedQueryString = new StringBuilder(); for(String key : sortedKeys) { // 這里注意對key和value進行編碼 canonicalizedQueryString.append() .append(percentEncode(key)).append(=) .append(percentEncode(parameters.get(key))); } // 這里注意對canonicalizedQueryString進行編碼 stringToSign.append(percentEncode( canonicalizedQueryString.toString().substring(1)));