Служба Google Geocoding возвращает Error 400 Bad Request

Я пытаюсь получить ответ json от службы геокодирования google. Я использую 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);

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

Любые идеи?

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

Ответ 1

Ну, я понял это.

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

$cityName = "Monterrey, NL";

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

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

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

Ответ 2

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

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

Ответ 3

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