因此,我正在使用以下源代码尝试检索JSON数据并解析为PHP字符串变量:
<?php
$jsonfile3 = file_get_contents("https://www.quandl.com/api/v3/datasets/CHRIS/CME_C1.json");
$jsondata3 = json_decode($jsonfile3);
$cbot_date1 = $jsondata3->dataset->data[0][0];
echo $cbot_date1;
?>
当我在浏览器中使用该URL时,我可以看到所有数据。但是,当我尝试运行脚本时,出现以下错误:
无法打开流:HTTP请求失败!
我在stackoverflow上看到过类似的帖子,但是源代码与我使用的代码有些不同,因此我有些困惑,希望您的帮助。我使用的同一代码已与其他API / JSON数据源一起正常工作。
请让我知道上面示例中显示的特定于源代码的所有可能解决方案。任何帮助是极大的赞赏。
谢谢!
答案 0 :(得分:1)
您可以为此使用php curl。
根据您的代码(未经测试):
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://www.quandl.com/api/v3/datasets/CHRIS/CME_C1.json",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => array(
"Accept: */*",
"Accept-Encoding: gzip, deflate",
"Cache-Control: no-cache",
"Connection: keep-alive",
"Host: www.quandl.com",
"cache-control: no-cache"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if (!$err) {
$jsondata3 = json_decode($response);
$cbot_date1 = $jsondata3->dataset->data[0][0];
echo $cbot_date1;
} else {
echo "cURL Error #:" . $err;
}
说明:
注意:我还注意到您要的数据为1010.75 KB(很小)。平均请求时间为3.41s(短时间)。卷毛可能会给出超时错误。这就是为什么我添加30秒的
CURLOPT_TIMEOUT
。
经过一些测试,我得出结论认为匿名呼叫的限速开始生效。
QELx01 429 You have exceeded your daily call limit as an anonymous user.
我建议您获取一个api密钥,并在此?api_key=YOURAPIKEY
处输入网址。
速率限制:您还评论说,由于没有卷曲错误,但json中存在速率限制错误,因此您获得了白页。 Quandl.com的速率限制文档