一:前言
創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站建設(shè)、陸河網(wǎng)絡(luò)推廣、微信小程序開發(fā)、陸河網(wǎng)絡(luò)營銷、陸河企業(yè)策劃、陸河品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們大的嘉獎;創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供陸河建站搭建服務(wù),24小時服務(wù)熱線:18980820575,官方網(wǎng)址:www.cdcxhl.com擼主剛開始嘗試使用CloudStack API時; 查閱相關(guān)資料,網(wǎng)上基本是官方的一個版本。大多都是復(fù)制內(nèi)容;沒有任何幫助。且擼主是在 .NET 的框架下操作;資料更少,目前經(jīng)過學(xué)習(xí)摸索 系統(tǒng)基本處于穩(wěn)定,故將前期遇到的問題整理一二,望能對大家有所幫助。
/***************該段-官話********************/
CloudStack API 也是基于 Web Service,可以使用任何一種支持 HTTP 調(diào)用的語言(例如 Java,PHP)編寫代碼。
調(diào)用代碼(caller)首先需要在管理服務(wù)器進(jìn)行認(rèn)證。目前 CloudStack 采用兩種認(rèn)證方式:
Session 認(rèn)證:通過 login API,獲得一個 JSESSIONID cookie 和一個 SESSIONKEY token。
API Key 認(rèn)證。
/***************該段-官話********************/
二:擼主采用 API Key 進(jìn)行認(rèn)證:
1、生成Signature 之前,我們得先擁有[API Key] & [Security Key],該文主要記錄Signature 加密實(shí)現(xiàn),如何生成這兩個Key 擼主 便不再贅述。
2、官方提供生成Signature 的語言是Perl:地址如下,可自行觀摩:
https://github.com/snumano/CloudStack-API/blob/master/generate-url.pl
3、進(jìn)而擼主又找到了 Python 版本:地址如下:
https://github.com/jasonhancock/cloudstack-pythonclient/blob/master/CloudStack/BaseClient.py
4、當(dāng)然也少不了Java 版本的:CloudStack 開源包里應(yīng)該能找到,在此擼主分享一篇帖文:
http://blog.csdn.net/rishengcsdn/article/details/38387721
三:使用C# 生成 Signature,有了以上資料,寫起C# 版本的,自是得心應(yīng)手,當(dāng)然也有些許差異,幾個問題需要注意:
1、[ApiKey] & [SecretKey] 字符串較長,切勿出錯
2、參數(shù)加密時以小些形式
3、參數(shù)加密時,需要對其進(jìn)行排序(以參數(shù)第一個字母為準(zhǔn))
4、加密前統(tǒng)一編碼:UTF8
5、加密方式為:HmacSha1
6、加密后信息確認(rèn)編碼為: UTF8
7、組合字符串
四:代碼實(shí)現(xiàn)(僅供參考,測試代碼)
如:獲取云主機(jī)的狀態(tài)信息
參數(shù)信息:
調(diào)用地址:“http://*.*.*.*:**/client/api?”
API 名稱:“listVirtualMachines”
參 數(shù):
details=stats 狀態(tài)
account=admin 操作人賬號
id=**** 虛擬主機(jī)編號
API KEY:“******************”
SecretKey: “****************”
///
輸出:http://*.*.*.*:**/client/api?command=listVirtualMachines&details=stats&account=admin&id=****&apikey=****&signature=****
測試執(zhí)行:成功.