在php中抓取https json url

时间:2013-04-22 12:30:39

标签: php json https

过去2-3个月我一直在使用此代码来获取所需的json数据变量。当网址更改为https://时,它将显示错误,并且不会显示。是否有一种不同的方法从http为json url和php获取https?我似乎无法从一个好的例子或文档中找到任何东西。

<?
$btcjsonurl = "http://blockchain.info/stats?format=json";
$btcjson = file_get_contents($btcjsonurl,0,null,null);
$btcdata = json_decode($btcjson, true);
$btcdiff = $btcdata['difficulty'];
echo $btcdiff;
?>

2 个答案:

答案 0 :(得分:1)

错误是什么?

请参阅this(可能的重复)

除非你有什么理由不能使用curl或类似的php客户端吗?

Https需要SSL等额外的客户端实现,而所有在没有$ opts的情况下调用的file_get_contents将在函数上执行读取文件流。例如,如果SSL证书中的主机名不是您传递给文件获取内容的链接中的主机名,则https的实现要求您 - 客户端 - 验证这一点(通常通过查找允许的主机列表,您将需要手动编写)。但是因为你没有直接与客户合作,所以你没有机会处理这个问题。

另一种方法当然是使用stream_context_create,但上面的链接已经涵盖了这一点,所以我不再重复了。

希望这有帮助。

答案 1 :(得分:0)

最有可能的是,目标URL位于服务器上,该服务器的HTTPS证书未使用PHP知道的提供程序进行签名。尝试将浏览器导航到该页面,然后查看它是否通过URL显示挂锁。如果您收到任何安全警告,那么您肯定会发现一件事阻止PHP下载内容。