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

cURL发送POST请求返回200但Payload解析失败是什么原因?

问题根因

你遇到的问题由两个错误共同导致:

  • 未配置cURL的CURLOPT_RETURNTRANSFER参数:默认情况下curl_exec()执行成功时不会返回接口响应内容,而是直接将响应内容输出到标准输出,仅返回布尔值true表示请求执行成功。你看到的奇怪报错Payload is missing or failed to parsetrue,是目标接口返回的报错内容Payload is missing or failed to parse被cURL直接输出,和后续你把布尔值true转成JSON返回的内容拼接在了一起。
  • 请求参数存在二次JSON编码:你传入的eventValue已经是转义后的JSON字符串,整个$data数组执行json_encode()时,会对eventValue内的引号做二次转义,导致目标接口无法正常解析请求负载,才返回了Payload解析失败的报错。
  • dd()能正常看到返回的原因是dd()会终止程序后续输出流程,cURL直接输出的报错内容被截断,只有你构造的JSON响应被输出,所以看起来正常。
修复方案
  1. 在cURL配置中新增CURLOPT_RETURNTRANSFER => true,让curl_exec()将接口响应作为字符串返回
  2. 将eventValue改为数组格式,避免二次JSON编码
修正后代码
$data = [
    "event"         => "name",
    "id"            => "user id",
    // 直接传数组,json_encode会自动处理成JSON格式
    "eventValue"    => [
        "nextEvent" => "0",
        "otherEvent" => "0"
    ],
    "eventCurrency" => "USD",
];

$curl = curl_init();

curl_setopt_array($curl, array(
    CURLOPT_URL           => "myApiUrl.com",
    CURLOPT_CUSTOMREQUEST => "POST",
    CURLOPT_POSTFIELDS    => json_encode($data),
    // 新增该配置,让curl_exec返回响应内容
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER    => array(
        "content-type" => "application/json",
        "authentication" => env("API_KEY")
    ),
));

$response = curl_exec($curl);
curl_close($curl);

// 如果接口返回的是JSON格式,可先decode再返回,避免嵌套JSON转义
// $responseData = json_decode($response, true);
// return response()->json($responseData);
return response()->json($response);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 13:24:05