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

使用Laravel Guzzle按RFC 5261给XML文档打补丁报不支持媒体类型

问题原因

  • 第一:RFC 5261规范定义的XML补丁请求对应的专属MIME类型是application/xml-patch+xml,不是你使用的application/xml或text/xml,服务端会通过这个Content-Type判断你提交的是标准XML补丁内容,传错就会返回不支持的媒体类型错误。
  • 第二:Guzzle的body参数接收的是字符串类型,你现在给body传了一个数组,Guzzle无法正确序列化该内容,甚至可能自动覆盖你定义的Content-Type头,导致请求格式完全不符合预期。

修正后的代码

$this->http->patch(".../$id", [
    'headers' => [
        'Content-Type' => 'application/xml-patch+xml'
    ],
    'body' => '
        <diff>
            <replace sel="Registration/Status">Cancelled</replace>
        </diff>
    ',
]);

额外排查项

如果修改后还是报错,可添加debug => true参数打印完整请求日志,确认以下两点:

  • Guzzle没有自动覆盖你设置的Content-Type请求头
  • 实际提交的请求体是完整的XML字符串,没有多余的数组包装或转义错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 22:06:04