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

如何在Postman中发送XML字符串作为请求体适配[FromBody]string参数接口

问题根因

WebAPI的[FromBody]参数绑定逻辑会根据请求的Content-Type选择对应格式化器反序列化内容:当Content-Type为application/xml时,XML格式化器会尝试将XML结构映射到参数的CLR类型,string类型没有对应的XML根节点匹配,因此绑定结果始终为null。

方案1:仅调整Postman配置(无需修改后端代码)

如果你不想改动现有接口代码,按如下步骤配置Postman即可:

  • 请求头设置:将Content-Type的值改为application/json
  • 请求体设置:选择raw格式,将你需要提交的完整XML内容用英文双引号包裹,XML内容内部的双引号统一转义为\",示例请求体如下:
"<root><orderId>123</orderId><content>测试申请</content></root>"

点击发送后,后端string类型的application参数就能正常接收到完整XML字符串。

方案2:修改后端代码适配原生XML提交

如果希望保持Content-Type: application/xml的提交规范,推荐使用以下两种改法:

改法1:调整参数类型为XElement

直接将参数改为XElement,格式化器可以正常绑定XML内容,调用ToString()即可拿到完整XML字符串:

[HttpPost]
[Route("whatever")]
public async Task<IHttpActionResult> Apply([FromBody]XElement application)
{
    string xmlStr = application.ToString();
    // 你的业务逻辑
}

改法2:直接读取原始请求体

跳过模型绑定逻辑,直接读取请求的原始内容,不受Content-Type限制:

[HttpPost]
[Route("whatever")]
public async Task<IHttpActionResult> Apply()
{
    string application = await Request.Content.ReadAsStringAsync();
    // 你的业务逻辑
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 23:54:03