2011-03-22 13 views
10

He intentado obtener una respuesta json del servicio de geocodificación de google. Estoy usando PHP. Estaba intentando con fopen, luego leí en otra pregunta de stackoverflow que debería usar file_get_contents, pero no funcionó demasiado. Luego sigo buscando y encontré a alguien en otro foro que me dijo que sería una mejor solución si uso CURL, así que cambié mi código y no está funcionando. En todos los casos, recibí un "Error 400: Solicitud incorrecta. Su cliente ha emitido una solicitud incorrecta o mal formada".El servicio de geocodificación de Google devuelve Error 400 Solicitud incorrecta

Mi código es la siguiente:

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

Entonces imprimir el contenido y recibieron el mensaje de error.

¿Alguna idea?

Muchas gracias.

Respuesta

20

Bueno, lo descubrí.

variable de Mi $ cityName era la siguiente:

$cityName = "Monterrey, NL"; 

El espacio en blanco entre la coma y "NL". Solía ​​str_replace para cambiar "" para "+" y obtener una URL válida, como en la documentación:

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

Saludos y muchas gracias por su ayuda!

+5

Alternativamente, podría envolver todas las variables en 'urlencode()' –

1

creo que se está perdiendo la API-Key

Por cierto, yo simplemente usar file_get_contents() para geocodificador de Google, ya que no hay cabeceras especiales que hay que establecer, o http-redirecciones hay que seguir, etc.

+0

Hola. Gracias por su respuesta. No funcionó. ¡Gracias de nuevo! – Chuy

0

FYI, acabo de toparme con esto y mi problema fue que había escrito incorrectamente el parámetro de cadena de consulta "dirección" (lo escribí como "dirección" en lugar de "dirección").

Cuestiones relacionadas