File_get_contents没有从url返回Json数据

时间:2017-05-21 18:48:14

标签: php json

我已经检查了php ini文件,并且该功能已明确启用。 Json数据本身也是100%有效,所以我真的很难接受这个。应该是一个简单的任务!我试图在localhost(Xamp)环境中这样做,我不太熟悉,所以可能会影响结果?任何帮助表示赞赏。如果你愿意,可以看看网址。

$json_url = "http://api.vatlookup.eu/rates/be/";
$json = file_get_contents($json_url);
$data = json_decode($json, TRUE);
echo "<pre>";
print_r($data);
echo "</pre>";

1 个答案:

答案 0 :(得分:0)

  

这可能与ini配置设置allow_url_fopen有关。

您的代码应该可以运行,它可以在我的环境中运行。

您可以通过运行以下命令来测试它:

php.exe -r "echo file_get_contents('http://api.vatlookup.eu/rates/be/');"

返回此内容 JSON:

{
    "rates": [
        {
            "name": "Super Reduced",
            "rates": []
        },
        {
            "name": "Reduced",
            "rates": [
                6,
                12
            ]
        },
        {
            "name": "Standard",
            "rates": [
                21
            ]
        },
        {
            "name": "Increased",
            "rates": []
        },
        {
            "name": "Parking",
            "rates": [
                12
            ]
        }
    ],
    "disclaimer": "Rates data is based on information published by the European Commission, updated 1st January 2017."
}

有时您需要设置user-agent和referer。我正在使用cURL提供替代方案,希望它可能对您有用:

function get_data() {
    $ch = curl_init("http://api.vatlookup.eu/rates/be/");
    curl_setopt($ch,CURLOPT_HTTPHEADER, [
        'Referer: http://api.vatlookup.eu/rates/be/',
        'User-agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3095.5 Safari/537.36'
    ]);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
    $result = curl_exec($ch);
    curl_close($ch);
    return $result;
}

示例用法:

$data = get_data();
$json = json_decode($data, true);
echo "<pre>",print_r($json,true),"</pre>";