这可以从命令行进行:
curl -H "Content-Type: application/json" -X POST -d '<my data>' http://my_user:my_pass@my_url
这不适用于python脚本:
res=requests.post(
'http://my_user:my_pass@my_url',
json='<my data>')
发生的情况是它命中了服务器,但未授权。 REST API是使用Django Rest Framework构建的,我得到了
{"detail":"Invalid username/password."}
http://www.django-rest-framework.org/tutorial/4-authentication-and-permissions/
密码包含以下特殊字符%(\
我逃脱了\,所以它是两个反斜杠。我也尝试在字符串前面加上r和4个反斜杠。
我也尝试使用
auth=('my_user','my_pass')
使用不同的转义符。我通过http://curl.trillworks.com/运行了它,但仍然没有用。
明天我将把密码更改为简单的密码并进行测试。
如果这不起作用,我将放弃并在仅运行该curl命令的末尾添加一个bash脚本。
最佳答案
您需要尝试使用requests
库设置身份验证,如下所示:
from requests.auth import HTTPBasicAuth
response = requests.post(url, json=payload, auth=HTTPBasicAuth('user', 'pass'))
http://docs.python-requests.org/en/master/user/authentication/#basic-authentication