You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用Watch2Gether API时urllib.request.Request恒返回HTTP 400错误

错误原因

  • 核心问题是请求头声明的格式和实际请求体格式不匹配:你在headers中设置了Content-Type: application/json,但实际用urllib.parse.urlencode()将参数序列化成了application/x-www-form-urlencoded格式的表单数据,服务端收到请求后按照JSON格式解析body失败,直接返回400 Bad Request。
  • 不传headers时请求正常的原因:urllib发送带请求体的POST请求时,如果没有手动指定Content-Type,会自动添加Content-Type: application/x-www-form-urlencoded的默认请求头,和你实际传输的表单格式参数匹配,服务端可以正常解析,因此请求成功。官方文档虽然要求传JSON格式,但服务端实际兼容了表单格式的传参方式。

修复方案

有两种可选修复方式,任选其一即可:

方案1:继续使用表单传参

删除手动定义的headers变量,或者将headers中的Content-Type改为application/x-www-form-urlencoded即可,其余代码无需修改。

方案2:严格遵循文档要求使用JSON传参

将请求体的序列化方式从urlencode改为json序列化,和你声明的Content-Type匹配,修改对应方法中data的生成逻辑即可,示例修改点:

# createroom方法原来的代码
# data = urllib.parse.urlencode(body_create).encode("utf-8")
# 修改为
data = json.dumps(body_create).encode("utf-8")

# updateroom方法同理修改data生成逻辑
# data = urllib.parse.urlencode(body_update).encode("utf-8")
# 修改为
data = json.dumps(body_update).encode("utf-8")

另外建议修改代码中用dict作为变量名的写法,dict是Python内置类型的关键字,用作变量名可能引发不可预期的问题,建议替换为res_data之类的自定义名称。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 05:24:02