Telerik Fiddler成功POST请求转Python脚本遇400错误求助
解决Python requests POST请求返回400错误的问题
我来帮你排查这个问题——你在Fiddler里构造的POST请求能正常执行,但转成Python脚本后返回400,核心问题不是缺少依赖库,而是请求头的设置有误,具体分析和解决方案如下:
问题根源
你手动设置了Content-Length和Host这两个请求头,但这两个头其实是requests库会自动处理的:
Content-Length:你写的105是占位符xxx/xxxx对应的请求体长度,但换成真实的用户名密码后,请求体实际长度会变化,服务器校验到请求头里的长度和实际内容长度不匹配,就会返回400错误。Host:requests会从你传入的URL自动提取并添加这个头,手动设置反而可能出现格式或值不匹配的问题。
修改后的Python脚本
移除多余的请求头,同时确保用户名和密码是真实有效值,脚本如下:
import requests headers = { 'Connection': 'Keep-Alive', 'Content-Type': 'application/x-www-form-urlencoded', 'Accept': 'application/json', 'Authorization': 'Basic XyXyXyXyXyXyXyXyXyXyXy=' } body = { 'grant_type': 'password', 'username': '你的真实用户名', 'password': '你的真实密码', 'scope': 'random.api.external' } response = requests.post('https://login.random.com/connect/token', headers=headers, data=body) # 打印响应信息,方便排查后续问题 print("响应状态码:", response.status_code) print("响应内容:", response.text)
额外排查建议
如果修改后还是报错,可以尝试直接传入URL编码格式的请求体字符串(跳过字典自动编码步骤):
body = 'grant_type=password&username=你的真实用户名&password=你的真实密码&scope=random.api.external' response = requests.post('https://login.random.com/connect/token', headers=headers, data=body)
内容的提问来源于stack exchange,提问作者Datacrawler
相关产品推荐
相关产品推荐

