Python——Curl 可以工作,而 requests lib 不行

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

最佳答案

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

关于Python——Curl 可以工作,而 requests lib 不行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39218313/

相关文章:

python - 如何根据ID和日期计算运行总和

python - 属性访问在 print 语句中有效,但在 while 循环中引发有关 NoneType 的 AttributeError

python - 为什么 H2oFrame 忽略我的输入列类型?

php - "application/json"类型阻止发送后变量

python - 如何告诉 Python 合并列中的每一行并返回加起来为零的行?

http - 从 wxWidgets 应用程序通过 HTTPS POST 发送反馈数据

php - PayPal Express Checkout PHP 没有得到响应

python - 如何在 Django 中编写自己的权限

python - 为 get 和 post 请求定义不同的模式 - AutoSchema Django Rest Framework

Django Rest Framework 缺少 Bootstrap