我一直试图从谷歌的地理编码服务中得到一个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);
然后我打印内容并收到错误消息。
有什么想法吗?
非常感谢。
答案 0 :(得分:20)
好吧,我明白了。
我的$ cityName变量是这样的:
$cityName = "Monterrey, NL";
逗号和“NL”之间的空白区域。我使用str_replace来更改“”为“+”并获得一个有效的URL,如文档中所示:
http://code.google.com/intl/es/apis/maps/documentation/geocoding/
欢迎并感谢您的帮助!
答案 1 :(得分:1)
我认为你错过了API-Key
顺便说一句,我只是将google_get_contents()用于Google的地理编码器,因为您不需要设置特殊标头,或者您必须遵循http重定向等等。
答案 2 :(得分:0)
仅供参考,我刚刚遇到这个问题,我的问题是我输错了“地址”查询字符串参数(我输入的是“地址”而不是“地址”)。