将Curl请求转为Guzzle后调用Cloudflare API出现解码错误排查
问题分析与解决:Guzzle调用Cloudflare Stream Copy API返回"decoding error"
你的Guzzle请求存在两处关键问题,直接导致API返回解码错误:
请求体格式不匹配
原curl命令通过-d传递JSON字符串作为请求体,API要求接收application/json格式的数据。但你的Guzzle代码使用了form_params参数,这会把数据编码为application/x-www-form-urlencoded的表单格式,和API预期的格式完全不符,自然无法解析。PHP数组语法错误
在meta子数组中,你用了JavaScript风格的冒号:定义键值对,而PHP里数组的键值对应该使用=>来声明。
修正后的Guzzle代码
$response = $client->request('POST', 'https://api.cloudflare.com/client/v4/accounts/' . $accountId . '/stream/copy', [ 'headers' => [ 'Authorization' => 'Bearer ' . $token, ], 'json' => [ "url" => "https://storage.googleapis.com/zaid-test/Watermarks%20Demo/cf-ad-original.mp4", "meta" => [ "name" => "My First Stream Video" ] ] ]);
说明:使用json参数时,Guzzle会自动设置Content-Type: application/json请求头,同时将数组编码为标准JSON字符串,完全匹配原curl的请求格式。
内容的提问来源于stack exchange,提问作者mehmet
相关产品推荐
相关产品推荐

