2012-04-15 52 views
0

我正在努力获得Rest API Post与供应商api一起工作,并希望有人可以给我一个指针。Python将数据添加到帖子主体

意图是将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缓冲区中,然后将方法名称,会话ID和其他参数放入网址。

任何人都可以给我一个如何正确做到这一点的想法。我不是开发人员,并且正在努力正确地学习这一点。例如,如果我想在邮件正文中发送命令“help”?

感谢您的任何指导

+1

你可能会更好使用请求库的http://文档。 python-requests.org/en/latest/index.html它工作在比urllib更高的层次上,并且更易于使用。 – 2012-04-15 13:18:50

+0

是作为URL的一部分传递的身份验证参数吗?我的意思是像url一样?sessionid = ...&... – 2012-04-15 13:43:13

+0

我同意汤姆,使用请求,沟urllib2 – Wes 2012-04-15 15:42:37

回答

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命令只是放在缓冲区,而不是编码....