Служба геокодирования Google возвращает ошибку 400 Bad Request - PullRequest
10 голосов
/ 22 марта 2011

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

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

Есть идеи?

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

Ответы [ 3 ]

20 голосов
/ 22 марта 2011

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

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

$cityName = "Monterrey, NL";

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

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

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

1 голос
/ 22 марта 2011

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

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

0 голосов
/ 23 августа 2016

К вашему сведению, я только что натолкнулся на это, и моя проблема заключалась в том, что я неправильно набрал параметр строки запроса «address» (я набрал его как «адрес», а не «адрес»).

...