Rest 使用参数调用云堆栈

Rest 使用参数调用云堆栈,rest,python-2.7,apache-cloudstack,Rest,Python 2.7,Apache Cloudstack,我正在尝试使用下面的代码进行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']='xxxxxxxxxxxxxxxxxxx

我正在尝试使用下面的代码进行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调用发送附加参数?? 以及iam向云堆栈发送数据而不是从云堆栈获取数据时如何发送参数
e、 g createuser

请求
字典添加其他参数

例如,listUsers允许列出特定用户名的详细信息()。为此,您需要更新
请求
创建,如下所示:

request={}
request['command']='listUsers'
request['username']='admin'
request['response']='xml'
request['apikey']='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
同样说“将整个命令字符串小写,并通过每个字段值对的字段按字母顺序进行排序”。文档的这一部分还包括在URL中添加到期日

最后,您需要通过使每个HTTP GET唯一来确保HTTP GET不被网络基础设施缓存。CloudStack API使用一个。或者,您也可以,或者使用HTTP POST。

谢谢@Donal它起作用了:)您知道如何使用PHP对云堆栈进行API调用吗