Curl 谷歌地理编码服务返回错误400错误请求

Curl 谷歌地理编码服务返回错误400错误请求,curl,google-geocoder,Curl,Google Geocoder,我一直在尝试从谷歌的地理编码服务获取json响应。我正在使用PHP。我试着用fopen,然后我在另一个stackoverflow问题中读到,我应该使用file\u get\u内容,但也不起作用。然后我继续搜索,在另一个论坛上找到一个人,他说如果我使用CURL,我会找到更好的解决方案,所以我更改了我的代码,但不起作用。在所有情况下,我都收到一个“错误400:错误的请求。您的客户端发出了一个格式错误或非法的请求。” 我的代码是: $jsonUrl = "http://maps.googleapis.

我一直在尝试从谷歌的地理编码服务获取json响应。我正在使用PHP。我试着用fopen,然后我在另一个stackoverflow问题中读到,我应该使用file\u get\u内容,但也不起作用。然后我继续搜索,在另一个论坛上找到一个人,他说如果我使用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);
然后我打印内容并得到错误消息

有什么想法吗


非常感谢。

我认为您缺少API密钥


顺便说一句,我只是为谷歌的geocoder使用file_get_contents(),因为没有需要设置的特殊标题,也没有需要遵循的http重定向,等等。

好吧,我知道了

我的$cityName变量是:

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


问候你,非常感谢你的帮助

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

您好。谢谢你的回复。它不起作用。再次感谢!