Google 地理编码服务返回错误 400 错误请求

Posted

技术标签:

【中文标题】Google 地理编码服务返回错误 400 错误请求【英文标题】:Google Geocoding service returns Error 400 Bad Request 【发布时间】:2011-07-20 17:34:54 【问题描述】:

我一直在尝试从 google 的地理编码服务获取 json 响应。我正在使用 php。我正在尝试使用 fopen,然后我读到另一个 *** 问题,我应该使用 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);

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

有什么想法吗?

非常感谢。

【问题讨论】:

【参考方案1】:

好吧,我想通了。

我的 $cityName 变量是这样的:

$cityName = "Monterrey, NL";

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

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

您好,非常感谢您的帮助!

【讨论】:

【参考方案2】:

我认为您缺少 API 密钥

顺便说一句,我只是将 file_get_contents() 用于 Google 的地理编码器,因为您不需要设置特殊的标头,或者您必须遵循的 http 重定向等。

【讨论】:

嗨。感谢您的答复。它没有用。再次感谢!【参考方案3】:

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

【讨论】:

以上是关于Google 地理编码服务返回错误 400 错误请求的主要内容,如果未能解决你的问题,请参考以下文章

未使用 Google 地理编码服务找到地址

Javascript 中的反向地理编码返回 MissingKeyMap 错误

Google 地理编码 API 为邮政编码返回 ZERO_RESULTS

Google Geocoding API 返回错误的语言作为响应

地理位置 - 'https://www.googleapis.com/' 上的网络位置提供商:返回错误代码 400

Oauth2:远程服务器返回错误:(400) Bad Request