2011-03-22 4 views
10

Я пытаюсь получить ответ json от службы геокодирования google. Я использую PHP. Я пытался с fopen, затем я прочитал в другом вопросе stackoverflow, что я должен использовать file_get_contents, но тоже не работал. Затем я продолжаю искать и находить кого-то в другом форуме, который сказал, что я буду лучшим решением, если я использую CURL, чтобы я изменил свой код и не работал. Во всех случаях я получил «Ошибка 400: Плохой запрос». Ваш клиент выдал неверный или незаконный запрос ».Служба Google Geocoding возвращает ошибку 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); 

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

Любые идеи?

спасибо.

ответ

20

Ну, я понял.

переменная $ My CITYNAME была такова:

$cityName = "Monterrey, NL"; 

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

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

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

+5

В качестве альтернативы вы можете обернуть все переменные в 'urlencode()' –

1

Я думаю, вы пропустили API-Key

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

+0

Hi. Спасибо за ваш ответ. Это не сработало. Еще раз спасибо! – Chuy

0

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

Смежные вопросы