13

我一直在尝试从谷歌的地理编码服务中获得 json 响应。我正在使用 PHP。我正在尝试使用 fopen,然后我读到另一个 stackoverflow 问题,我应该使用 file_get_contents,但也没有用。然后我继续搜索并在另一个论坛中发现有人说如果我使用 CURL 我会提供更好的解决方案,所以我更改了我的代码并且无法正常工作。在所有情况下,我都收到“错误 400:错误请求。您的客户发出了格式错误或非法的请求。”

我的代码是这样的:

$jsonUrl = "http://maps.googleapis.com/maps/api/geocode/json?address=" . $cityName . "&sensor=false";

    $geocurl = curl_init();
    curl_setopt($geocurl, CURLOPT_URL, $jsonUrl);
    curl_setopt($geocurl, CURLOPT_HEADER,0); //Change this to a 1 to return headers
    curl_setopt($geocurl, CURLOPT_USERAGENT, $_SERVER["HTTP_USER_AGENT"]);
    curl_setopt($geocurl, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($geocurl, CURLOPT_RETURNTRANSFER, 1);

    $geofile = curl_exec($geocurl);

然后我打印内容并收到错误消息。

有任何想法吗?

非常感谢你。

4

3 回答 3

22

嗯,我想通了。

我的 $cityName 变量是这样的:

$cityName = "Monterrey, NL";

逗号和“NL”之间的空格。我使用 str_replace 将“”更改为“+”并获得一个有效的 url,如文档中所示:

http://code.google.com/intl/es/apis/maps/documentation/geocoding/

问候并非常感谢您的帮助!

于 2011-03-22T18:31:55.793 回答
1

我认为您缺少 API-Key

顺便说一句,我只是将 file_get_contents() 用于 Google 的地理编码器,因为您无需设置特殊的标头,也无需遵循 http-redirects 等。

于 2011-03-22T18:15:15.283 回答
0

仅供参考,我刚刚遇到这个问题,我的问题是我错误地键入了“地址”查询字符串参数(我将其键入为“地址”而不是“地址”)。

于 2016-08-23T00:08:03.440 回答