Skip to content

fix: 为 Reply.download_url 补充 Content-Type: application/json 请求头 - #7

Open
ecator wants to merge 1 commit into
DingTalk-Real-AI:mainfrom
ecator:fix/reply_download_missingbody
Open

ecator wants to merge 1 commit into
DingTalk-Real-AI:mainfrom
ecator:fix/reply_download_missingbody

Conversation

@ecator

@ecator ecator commented Oct 18, 2026

Copy link
Copy Markdown

问题描述

调用 reply.download_url(download_code, msg_id) 换取消息附件下载地址时,钉钉接口 /v1.0/robot/messageFiles/download 会返回 400 Missingbody 错误。

原因:Reply.download_url 调用 http_json 发送 POST 请求时未携带 Content-Type: application/json 请求头,标准库 urllib.request 在有请求体但未指定 Content-Type 时会默认使用 application/x-www-form-urlencoded,导致钉钉服务端无法解析 JSON 请求体而报错 400 Missingbody。

修改内容

  • src/dingtalk_channel_sdk/reply.py:在 Reply.download_url 请求头中显式补充 "Content-Type": "application/json"(与仓库内其余 http_json调用保持一致)。
  • tests/test_e7_media.py:新增 test_download_url_sends_json_content_type 单测,验证请求携带 Content-Type: application/json、x-acs-dingtalk-access-token 及正确的 JSON 请求体(若缺失 application/json 则模拟返回 400 Missingbody)。

测试验证

  • 运行 pytest 全量单测(139 项)全部通过。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant