Сервис геокодирования Google возвращает ошибку 400 Bad Request

Я пытался получить ответ json от службы геокодирования google. Я использую PHP. Я пытался с fopen, затем я прочитал в другом вопросе stackoverflow, что я должен использовать file_get_contents, но тоже не работал. Затем я продолжаю поиск и нашел кого-то на другом форуме, кто сказал, что я буду лучшим решением, если я использую CURL, поэтому я изменил свой код и не работает. Во всех случаях я получил " Error 400: Bad Request. Ваш клиент выдал неправильного или незаконного запрос."

мой код такой:

$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);

затем я печатаю содержимое и получаю сообщение об ошибке.

какие идеи?

большое спасибо.

3 ответов


Ну, я понял.

моя переменная $cityName была такой:

$cityName = "Monterrey, NL";

пробел между запятой и "NL". Я использовал str_replace, чтобы изменить "" на " + " и получить действительный url-адрес, как в документации:

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

привет и большое спасибо за вашу помощь!


Я думаю, что вам не хватает API-ключа

кстати, я просто использую file_get_contents () для геокодера Google, так как нет специальных заголовков, которые вы должны установить, или HTTP-перенаправления, которые вы должны следовать и т. д.


FYI, я просто столкнулся с этим, и моя проблема заключалась в том, что я неправильно набрал параметр строки запроса "адрес" (я набрал его как "адрес", а не "адрес").