Python -- Curl 有效,请求库无效

Python -- Curl works, requests lib doesn't

这在命令行中有效:

 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/ 但仍然没有用。

明天我要把我的密码改成简单的密码然后测试一下。

如果这不起作用,我将放弃并在末尾添加一个 bash 脚本来运行该 curl 命令。

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

I escaped \ , so it's a double backslash. I also tried with r in front of string, and 4 backslashes.

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

我删除了它,现在可以使用了。