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

Guzzle POST请求Shopware 6 API报JSON格式错误求助

问题原因及解决方法

核心问题分析

  • 变量名不匹配:你定义了$payload变量,但请求时传的是$data,导致实际发送的请求没有携带正确的参数。
  • 请求体格式错误:使用form_params会让Guzzle以application/x-www-form-urlencoded格式发送数据,但Shopware 6 API要求JSON格式的请求体,这就是返回"JSON payload is malformed"的根本原因。

修正后的代码

$payload = [
    'headers' => [
        'Accept' => 'application/json', // Content-Type会由Guzzle自动设置
    ],
    'json' => [
        "name" => "productname", 
        "productNumber" => "101003", 
        "stock" => 2, 
        "taxId" => "50ee15989533451095c9d7e03d9ce479", 
        "price" => [
            [
                "currencyId" => "b7d2554b0ce847cd82f3ac9bd1c0dfca", 
                "gross" => 15, 
                "net" => 10, 
                "linked" => false 
            ] 
        ] 
    ]
];

// 注意这里使用定义好的$payload变量
$response = $client->request('POST', 'http://shopware6.shop.de/api/product', $payload);

关键说明

  1. 使用json参数:Guzzle的json选项会自动将数组编码为JSON字符串,并设置正确的Content-Type: application/json请求头,无需手动处理编码和头信息。
  2. 变量名一致性:确保请求时传递的变量和定义的变量名一致,避免因变量未定义或为空导致的请求异常。
  3. 简化请求头:当使用json参数时,Content-Type头会被自动设置,只需保留Accept头指定期望的响应格式即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 18:05:45