Вызов стека облаков с параметрами
Я пытаюсь сделать вызов API, используя приведенный ниже код, и он работает нормально
import urllib2
import urllib
import hashlib
import hmac
import base64
baseurl='http://www.xxxx.com:8080/client/api?'
request={}
request['command']='listUsers'
request['response']='xml'
request['apikey']='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
secretkey='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
request_str='&'.join(['='.join([k,urllib.quote_plus(request[k])]) for k in request.keys()])
sig_str='&'.join(['='.join([k.lower(),urllib.quote_plus(request[k].lower().replace('+','%20'))])for k in sorted(request.iterkeys())])
sig=hmac.new(secretkey,sig_str,hashlib.sha1)
sig=hmac.new(secretkey,sig_str,hashlib.sha1).digest()
sig=base64.encodestring(hmac.new(secretkey,sig_str,hashlib.sha1).digest())
sig=base64.encodestring(hmac.new(secretkey,sig_str,hashlib.sha1).digest()).strip()
sig=urllib.quote_plus(base64.encodestring(hmac.new(secretkey,sig_str,hashlib.sha1).digest()).strip())
req=baseurl+request_str+'&signature='+sig
res=urllib2.urlopen(req)
result = res.read()
print result
Что я хочу знать, как я могу отправить дополнительный параметр с вызовом Api? и как отправлять параметры при отправке данных в облачный стек вместо получения из облачного стека, например, createuser
1 ответ
Добавьте дополнительные параметры к request
толковый словарь.
Например, listUsers позволяет отображать сведения о конкретном имени пользователя ( Справочник по API listUsers). Для этого вам нужно обновить request
создание следующим образом:
request={}
request['command']='listUsers'
request['username']='admin'
request['response']='xml'
request['apikey']='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
Кроме того, в Правилах подписи говорится "Строчная вся командная строка и сортировать ее по алфавиту через поле для каждой пары поле-значение". В этом разделе документов также рассматривается добавление срока действия к URL-адресу.
Наконец, вам нужно убедиться, что HTTP GET не кэшируется сетевой инфраструктурой, сделав каждый HTTP GET уникальным. CloudStack API использует кеш-буфер. Кроме того, вы можете добавить срок действия к каждому запросу или использовать HTTP POST.