Python - Curl工作,请求lib没有

时间:2016-08-30 03:24:57

标签: python curl django-rest-framework python-requests pycurl

这可以从命令行开始:

 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脚本。

2 个答案:

答案 0 :(得分:2)

您需要尝试使用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

答案 1 :(得分:0)

  

我逃脱了\,所以这是一个双反斜杠。我也试过前面的r   字符串和4个反斜杠。

curl命令中的\是为了转义括号。它不是密码的一部分。

我删除了它,现在它可以正常工作。