调用Keepa API返回乱码数据,寻求技术解决方案
问题原因
Keepa API 默认返回 gzip 压缩格式的响应数据,但你的PHP CURL请求未配置自动解压压缩内容的选项,导致原始压缩数据直接被输出,出现乱码。
解决方案
在CURL请求中添加CURLOPT_ENCODING选项,指定接受gzip编码并自动解压响应内容。
修改后的代码
更新你的CallAPI函数,添加gzip解压支持:
public function CallAPI($method, $url, $data = false) { $curl = curl_init(); switch ($method) { case "POST": curl_setopt($curl, CURLOPT_POST, 1); if ($data) curl_setopt($curl, CURLOPT_POSTFIELDS, $data); break; case "PUT": curl_setopt($curl, CURLOPT_PUT, 1); break; default: if ($data) $url = sprintf("%s?%s", $url, http_build_query($data)); } // Optional Authentication: curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 添加gzip解压支持 curl_setopt($curl, CURLOPT_ENCODING, 'gzip'); $result = curl_exec($curl); curl_close($curl); return $result; }
额外说明
- 确保你的PHP环境已启用
zlib扩展(大多数默认环境都已启用),若未启用,需在php.ini中开启extension=zlib。 - 添加该选项后,CURL会自动处理服务器返回的gzip压缩内容,将其解压为可读的JSON或文本数据。
内容的提问来源于stack exchange,提问作者Rohit pippale
相关产品推荐
相关产品推荐

