首页 > 解决方案 > Curl 帖子有效,但 Python Requests 帖子无效,给出 401 Unauthorized

问题描述

我可以做这个卷曲:

curl -X POST -k --header 'Content-Type: application/json' --header 'Accept: application/json' -d '{"grant_type":"password","username":"admin","password":"admin"}' 'https://<ip_address>/api/fdm/v3/fdm/token'

并从我正在处理的防火墙 API 获取访问令牌。但我正在尝试使用请求让它在 Python 中工作:

headers = {
"Content-Type": "application/json",
"Accept": "application/json"
}

payload = {
"grant_type": "password",
"username": "admin",
"password": "admin"
}

r = requests.post('https://<ip_address>/api/fdm/v3/fdm/token', headers=headers, data=payload, verify=False)

我得到一个 401 Unauthorized。我还尝试将我的有效负载转换为 json 并json=payload在我的 requests.post 中执行但得到相同的结果。我究竟做错了什么?curl 是否会发送一些我的请求中未包含的默认标头信息?谢谢!

标签: pythonpython-requests

解决方案


您需要使用json参数来requests.post. 你在那里做的是发送一个表单数据请求。

就像是:

r = requests.post('https://<ip_address>/api/fdm/v3/fdm/token', headers=headers, json=payload, verify=False)

推荐阅读