You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用Python发送POST请求返回400 Bad Request,请求排查问题

解决POST请求返回400 Bad Request的问题

先看看你的代码:

import requests
r = requests.post("http://tupodomen.info/api/login", data={'username': '<login>', 'password': '<password>'}, headers={'content-type': 'application/x-www-form-urlencoded'})
print(r.status_code, r.reason)
print('<<<<')
k=input("press close to exit")

400错误通常表示你的请求不符合服务器的预期,我帮你梳理几个最可能的原因和解决办法:

  • 占位符未替换成实际值:你代码里的<login><password>是占位符对吧?如果直接发送这个字符串,服务器根本识别不了你的身份,肯定会返回400。先把这两个替换成你真实的用户名和密码试试。

  • 请求格式不匹配:虽然你手动设置了application/x-www-form-urlencoded的Content-Type,但很多现代API更倾向于接收JSON格式的请求体。你可以换用json参数来发送数据,requests会自动帮你设置正确的Content-Type头,代码改成这样:

    r = requests.post("http://tupodomen.info/api/login", json={'username': '你的真实用户名', 'password': '你的真实密码'})
    
  • API端点可能有误:确认一下http://tupodomen.info/api/login是不是正确的登录接口路径。有时候官方文档可能更新了路径,或者你拼写错了(比如少个v1变成/api/v1/login),可以仔细核对一下。

  • 缺少必填参数:有些登录接口会要求额外的参数,比如验证码、设备标识或者csrf token。你可以打开浏览器的开发者工具(按F12),模拟一次正常登录,看看Network面板里发送的请求包含哪些参数,对比你的代码是不是漏了关键项。

  • 服务器返回了具体错误提示:你可以在代码里加一行print(r.text),看看服务器返回的具体内容。很多时候400错误会附带文字说明,比如“密码格式错误”或者“用户名不存在”,能帮你快速定位问题。

内容的提问来源于stack exchange,提问作者Atom Particle

火山引擎 最新活动