我正在努力让Rest API Post与供应商api合作,并希望有人能给我一个指针。
目的是将cli命令提供给帖子正文并传递给返回输出的设备。
电话看起来像这样:(这适用于所有其他电话,但由于发布到正文,这是不同的)
def __init__(self,host,username,password,sid,method,http_meth):
self.host=host
self.username= username
self.password= password
self.sid=sid
self.method=method
self.http_meth=http_meth
def __str__(self):
self.url = 'http://' + self.host + '/rest/'
self.authparams = urllib.urlencode({ "session_id":self.sid,"method": self.method,"username": self.username,
"password": self.password,
})
call = urllib2.urlopen(self.url.__str__(), self.authparams).read()
return (call)
无论我怎么尝试这个,我都无法让它正常工作。以下是API文档的摘录,解释了如何使用此方法:
要处理这些API,请将CLI命令放在HTTP post缓冲区中,然后放置 方法名称,会话ID和URL中的其他参数。
任何人都可以告诉我如何正确地做到这一点。我不是开发人员,我正在努力学习这一点。例如,如果我想发送命令" help"在邮政机构?
感谢您提供任何指导
答案 0 :(得分:0)
好的,这简直太荒谬了,我过度思考了这一点。我发现我有时候会看到一个比真正的问题和腰部时间更高的水平。无论如何,这是它应该如何工作:
def cli(self,method):
self.url = ("http://" + str(self.host) + "/rest//?method=" +str(method)+ "&username=" +str(self.username)+ "&password=" +str(self.password)+ "&enable_password=test&session_id="+str(self.session_id))
data="show ver"
try:
req = urllib2.Request(self.url)
response = urllib2.urlopen(req,data)
result = response.read()
print result
except urllib2.URLError, e:
print e.reason
cli命令只是放在缓冲区中而不是编码....