当我向通过 Rapid API 购买的 API 发送请求时,我遇到了这个问题。
错误:无法识别的内容编码类型。 libcurl 理解 deflate、gzip 内容编码。
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://songstats.p.rapidapi.com/artists/info?spotify_artist_id=2h93pZq0e7k5yf4dywlkpM&songstats_artist_id=vxk62ige",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-RapidAPI-Host: songstats.p.rapidapi.com",
"X-RapidAPI-Key: MY_API_KEY"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
exit;
`
我想在提出请求后获得艺术家的统计数据
要解决此问题,您可以在 cURL 选项中显式指定接受的编码。只需将以下行添加到您的 cURL 选项中即可:
curl_setopt($curl, CURLOPT_ENCODING, 'gzip, deflate');
这是修改后的代码:
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://songstats.p.rapidapi.com/artists/info?spotify_artist_id=2h93pZq0e7k5yf4dywlkpM&songstats_artist_id=vxk62ige",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => 'gzip, deflate', // Explicitly set accepted encodings
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-RapidAPI-Host: songstats.p.rapidapi.com",
"X-RapidAPI-Key: MY_API_KEY"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
exit;
通过将 CURLOPT_ENCODING 设置为“gzip, deflate”,您可以告诉 cURL 您的客户端可以处理使用 gzip 或 deflate 编码压缩的响应。这应该可以解决您面临的无法识别的内容编码问题。