在python请求库中,无法做授权?

时间:2015-04-26 07:45:09

标签: php python curl python-requests

我尝试在python上编写这段代码: http://vestacp.com/docs/api/#add_user

像这样: http://pastebin.com/XdzKKZpg

但我不能授权

2 个答案:

答案 0 :(得分:1)

在最后一行中,auth缺少“='签名:

req = r.post(vst_hostname, auth(vst_username, vst_hostname), \
        params=postvars, verify=False)

有关详细信息,请参阅authentication section in the requests documentation

答案 1 :(得分:0)

当你这样做时

r.post(vst_hostname, auth(vst_username, vst_hostname), params=postvars, verify=False)

你做的相当于

r.post(vst_hostname, data=auth(vst_username, vst_hostname), params=postvars, verify=False)

你想做什么

r.post(vst_hostname, auth=auth(vst_username, vst_hostname), params=postvars, verify=False)

此外,您可以简化此操作。您不需要明确说出HTTPBasicAuth(vst_username, vst_hostname),而是可以简单地传递一个这样的元组:

r.post(vst_hostname, auth=(vst_username, vst_hostname), params=postvars, verify=False)

我也不熟悉PHP代码的工作方式,因此您需要了解params=postvars创建查询字符串参数的事实,因此它与执行POST相同到

https://188.188.188.88/api?cmd=v-add-user&arg1=...&arg2=...

相反,如果数据应该在您要执行的请求的正文中:

r.post(vst_hostname, auth=(vst_username, vst_hostname), data=postvars, verify=False)