Postman如何测试XML上传接口 Postman发送form-data和raw XML

12次阅读

postman发送xml必须区分form-data与raw:前者将XML作为字段值走multipart解析,后者直接发XML体走标准body解析;选错导致400或415错误。

Postman如何测试XML上传接口 Postman发送form-data和raw XML

Postman里发XML到接口form-dataraw根本不是一回事

别被界面迷惑:Postman 的 form-data 会把整个 XML 当作一个字段的值(比如 filexml),而 raw 是直接把 XML 当请求体发送。服务端接收逻辑完全不同——前者走 multipart 解析,后者走标准 body 解析。选错就 400 或 415。

form-data 上传 XML 文件时,字段名必须和服务端约定一致

常见错误是随便填 key 名,比如写成 file,但后端实际期待的是 requestXmldata。还要注意是否要求文件名带扩展名(如 payload.xml),否则某些框架(如 spring)可能无法正确识别 Content-Type

  • form-data 表单中,Key 列填服务端明确要求的字段名(例如 xml_file
  • Value 列点右侧下拉箭头 → 选 File → 选择本地 .xml 文件
  • 确保该字段的 Content-Type 显示为 application/xml(Postman 通常自动设置,但可手动点右侧“edit”修改)
  • 不要额外加 Content-Type 请求头——multipart 会自动生成边界和子部分类型

raw 发送 XML,必须手动设 Content-Type 且不能带 bom

如果接口文档写的是 POST /api/v1/submit + Content-Type: application/xml,那就该走 raw。这时候 Postman 不会帮你包装 multipart,只原样发 body,所以漏设头或 XML 文件带 BOM 都会导致解析失败。

  • 切换到 Bodyraw → 右侧下拉选 XML (application/xml)
  • 手动在 Headers 标签页添加:Content-Type = application/xml; charset=utf-8
  • 粘贴的 XML 必须是纯 UTF-8 无 BOM 格式;用 vs code 打开后右下角看编码,点它 → “Save with Encoding” → 选 UTF-8
  • XML 第一行如果是 ,encoding 值要和实际字节一致,不一致反而容易出问题,建议删掉这行让服务端按 header 推断
   12345        Widget    

调试时怎么确认 Postman 真的发了什么

光看响应码没用。XML 接口出问题,90% 是请求体结构或编码对不上。得看真实发出的原始请求。

  • 点击右上角 Code 按钮 → 选 curl (bash) → 复制命令到终端执行,观察是否复现问题(排除 Postman ui 干扰)
  • console(View → Show Postman Console)里看完整请求头和 body hex dump,特别留意 Content-Length 和实际 body 字节数是否匹配
  • 如果服务端返回 415 Unsupported Media Type,优先检查 Content-Type 是否拼错、空格多一个、分号缺了
  • 如果返回 400 Bad Request 且提示“invalid XML”,大概率是 body 被 Postman 自动转义了(比如用了 form-data 却把 XML 粘在文本字段里)

XML 上传最麻烦的从来不是语法,而是服务端到底想收哪种格式——multipart/form-data 还是 application/xml。看接口文档里的 curl 示例最准,没有就抓包看生产环境真实请求。

text=ZqhQzanResources