PHP下调用网易云音乐搜索API结果不正确
大家好。
这是网易云音乐的搜索API。
当调用下面一段function,$word是英文时搜索结果正常,但中文的时候返回结果不正确。
为什么呢,请指教?
function music_search($word, $type=1)
{
$url = "http://music.163.com/api/search/pc";
$post_data = array(
's' => $word,
'offset' => '0',
'limit' => '20',
'type' => $type,
);
$referrer = "http://music.163.com/";
$URL_Info = parse_url($url);
$values = [];
$result = '';
$request = '';
foreach ($post_data as $key => $value) {
$values[] = "$key=" . urlencode($value);
}
$data_string = implode("&", $values);
if (!isset($URL_Info["port"])) {
$URL_Info["port"] = 80;
}
$request .= "POST " . $URL_Info["path"] . " HTTP/1.1\n";
$request .= "Host: " . $URL_Info["host"] . "\n";
$request .= "Referer: $referrer\n";
$request .= "Content-type: application/x-www-form-urlencoded\n";
$request .= "Content-length: " . strlen($data_string) . "\n";
$request .= "Connection: close\n";
$request .= "Cookie: " . "appver=1.5.0.75771;\n";
$request .= "\n";
$request .= $data_string . "\n";
$fp = fsockopen($URL_Info["host"], $URL_Info["port"]);
fputs($fp, $request);
$i = 1;
while (!feof($fp)) {
if ($i >= 15) {
$result .= fgets($fp);
} else {
fgets($fp);
$i++;
}
}
fclose($fp);
return $result;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
是不是你用的编码不一样
不正确是什么意思?我测试了下没问题
估计人家的接口不能接受原生的中文字符的编码。建议在post传入的参数当中,利用urlencode进行转码,再是真正的请求。你可以试试