如何在url https中获取json

时间:2013-06-01 15:53:47

标签: php json url cakephp-helper

我想使用googleapis网址获取timeZoneId。我希望这个url返回给我json响应稍后解析它并在我的数据库中插入lat和long。当它不是googlemap网址时它工作正常但我在我的代码中使用这种网址时出现了着名的“request_denied”错误:

如何从谷歌获取URL中的json,我想从纬度,经度和时间戳获取时区

https://maps.googleapis.com/maps/api/timezone/json?location=39.6034810,-119.6822510&timestamp=1331766000&sensor=false

我尝试过使用file_get_contents从URL获取数据。

$json_url = 'https://maps.googleapis.com/maps/api/timezone/json?location=39.6034810,-119.6822510&timestamp=1331766000&sensor=false';
$json = file_get_contents($json_url);
$obj = json_decode($json);
echo $obj->timeZoneId;

但它不起作用。它返回“status”:“REQUEST_DENIED” 谢谢任何小费。

更新

  

感谢所有:)我在php中检查 extention-> php_openssl 和它   工作

3 个答案:

答案 0 :(得分:2)

您忘记了网址中的s

$json_url = 'https://maps.googleapis.com/maps/api/timezone/json?location=39.6034810,-119.6822510&timestamp=1331766000&sensor=false';
$json = file_get_contents($json_url);
$obj = json_decode($json);
echo $obj->timeZoneId;

这适用于我的电脑。

答案 1 :(得分:1)

    $json_url = 'https://maps.googleapis.com/maps/api/timezone/json?location=39.6034810,-119.6822510&timestamp=1331766000&sensor=false'; 

    $json = file_get_contents($json_url);
    $data = json_decode($json, TRUE);
    echo $data['timeZoneId'];

尝试这个我认为这可能会有所帮助。问题出在json_decode上。

答案 2 :(得分:1)

更改您的网址:

$json_url = 'http://maps.googleapis.com/maps/api/timezone/json?location=39.6034810,-119.6822510&timestamp=1331766000&sensor=false';

到此:

$json_url = 'https://maps.googleapis.com/maps/api/timezone/json?location=39.6034810,-119.6822510&timestamp=1331766000&sensor=false';

使用 http ,您将获得REQUEST_DENIED。