我将使用api获取玩家详细信息。有些名字带有特殊字符。
姓名Bausí
网址:https / eu.api.battle.net / wow / character / Blackrock /Bausí?fields = statistics& locale = en_GB& apikey = xxx
如果我使用file_get_contens()则没有响应。
没有特殊字符的名称完美无缺。我已经使用了rawurlencode()和urlencode()。两者都不起作用。我能做什么? 我读了一些关于urlencode()的内容,而rawurlencode()依赖于服务器。
谢谢Chzn
答案 0 :(得分:0)
嗯,我不知道什么是错的。
$charname = mb_convert_encoding("Bausí", "HTML-ENTITIES", "UTF-8");
$realm = "Blackrock";
$_SESSION["region"] = "eu";
$opts = array('https' => array('header' => 'Accept-Charset: UTF-8, *;q=0'));
$context = stream_context_create($opts);
$char_params = array(
'fields' => "statistics",
'locale' => "en_GB",
'apikey' => "my_api_key"
);
$char_url = "https://".$_SESSION['region'].".api.battle.net/wow/character/".str_replace("'","",$realm)."/".$charname."?".http_build_query($char_params);
if (!$json_char_o = file_get_contents($char_url, false, $context)) {
$error = error_get_last();
echo "HTTPs request failed. Error was: " . $error['message'];
}else{
echo $json_char_decoded = json_decode($json_char_o);
}
它给我一个错误:
HTTP请求失败。错误是:file_get_contents(https://eu.api.battle.net/wow/character/Blackrock/Bausí?fields=statistics&locale=en_GB&apikey=my_api_key):无法打开流:HTTP请求失败!找不到HTTP / 1.1 404
响应应该是json对象。
如果我手动打开链接,它可以正常工作。怎么了? :/