无法通过cuRL从Google地图请求中获取JSON数据

时间:2013-09-24 13:06:49

标签: php json google-maps curl

我正在尝试用curl写一个请求。我想得到两点之间的距离。因此,我从我的数据库中获取这些点的数据来构建字符串。当我回应时,最后的字符串看起来像这样。

http://maps.googleapis.com/maps/api/distancematrix/json?origins=40215+Düsseldorf+Königsallee 59&destinations=40215+Düsseldorf&sensor=false

我也尝试使用https而不是http,但结果是一样的。

正如您所看到的,它返回了一个非常精细的JSON-Response,但是当我之后执行此操作时,我总是会收到错误。

public function request($signedUrl) {
        $ch = curl_init($signedUrl);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        $data = curl_exec($ch);
        curl_close($ch);
        $this->response = json_decode($data);
    }

$signedUrl是requestUrl。

当我var_dump($data)

时,Google收到错误
400. That’s an error.

Your client has issued a malformed or illegal request. That’s all we know. "

当我var_dump响应时,它只是给我null。

这可能是什么问题,我该如何解决?我也尝试用file_get_contents读取它但没有成功

1 个答案:

答案 0 :(得分:4)

作品[已测试] 。由于URL未编码,因此您收到了错误的请求。

<?php
$urlx='http://maps.googleapis.com/maps/api/distancematrix/json?origins=40215+D%C3%BCsseldor%20%E2%80%8Bf+K%C3%B6nigsallee59&destinations=40215+D%C3%BCsseldorf&sensor=false';
$ch = curl_init($urlx);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, 0);
$data = curl_exec($ch);
curl_close($ch);
var_dump(($data));