php - 无法使用 cuRL 从 Google map 请求获取 JSON 数据

标签 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 响应,但是当我之后执行此操作时,我总是会收到错误。

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 读取它,但没有成功

最佳答案

有效[已测试]。由于 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));

关于php - 无法使用 cuRL 从 Google map 请求获取 JSON 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18982484/

相关文章:

php - 防止 curl 为较大的文件生成 fatal error

javascript - 将对象数组更改为带有图表坐标的数组

javascript - 使用 javascript 将 DOM 对象发送到 PHP 服务器

php - Laravel 工厂关系......尊重 create() 或 make()

php - echo数组数据将所有文本转为小写

google-maps - 如何在 Google Places API 上唯一标识一个地点

javascript - 带有 angularjs 1.5 的谷歌地图实现

javascript - 如何在谷歌地图上拖动时绘制折线

php - 如何在我的主机上创建 Amazon S3 克隆?

json - 为蛇形 ADT 配置了 JsonCodec