JSON链接:http://vgmdb.info/album/79?format=json
我尝试过的代码:
$string = file_get_contents("http://vgmdb.info/album/79?format=json");
$json_a=json_decode($string,true);
$getit = $json_a['release_price']['price'];
echo $getit ;
但我得到一个空白的结果。然后我尝试下载文件并上传到我的服务器:
$string = file_get_contents("jsonfile.json");
$json_a=json_decode($string,true);
$getit = $json_a['release_price']['price'];
echo $getit ;
显示价格值。那么如何在不先下载json文件的情况下获得价格值呢?
答案 0 :(得分:1)
我在localhost尝试了,我得到了:
警告:file_get_contents(http://vgmdb.info/album/79?format=json): 无法打开流:HTTP请求失败! HTTP / 1.1 500内部 服务器错误
这是一个提示,因此您应该在调试代码时始终启用错误。
http 500
代码是该服务器的内部错误。我只是尝试在请求中添加一个User-Agent,它起作用了:
$options = array(
'http'=>array(
'method'=>"GET",
'header'=>"Accept-language: en\r\n" .
"User-Agent: Mozilla/5.0\r\n"
)
);
$string = file_get_contents("http://vgmdb.info/album/79?format=json", false, stream_context_create($options));
$json_a=json_decode($string,true);
$getit = $json_a['release_price']['price'];
echo $getit ;
答案 1 :(得分:1)
vgmdb.info的作者修复了因缺少User-Agent标头而导致的错误。原始代码现在有效。
答案 2 :(得分:0)
可能是因为:
in php.ini is disabled to file_get_contents gets data from url-s
答案 3 :(得分:0)
如果已启用fopen wrappers,则可以将URL用作具有此功能的文件名。有关如何指定文件名
的更多详细信息,请参见fopen()答案 4 :(得分:0)
也许你可以使用curl:
$url = 'http://vgmdb.info/album/79?format=json';
//
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt( $ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 5.1; rv:31.0) Gecko/20100101 Firefox/31.0' );
$response = curl_exec($ch);
curl_close($ch);
$json = json_decode($response);
//result
echo 'price: '.$json->release_price->price;
响应为您提供了一个对象:
//part of object
"release_date": "1999-11-20",
"release_events": [],
"release_price": {
"currency": "JPY",
"price": 2854.0
},