2012-09-17 15 views
6

Tengo varias URL de caracteres especiales a las que me tengo que conectar con Jsoup.connect (cadena), pero no se carga la página (obteniendo un error 500). No me interesa mucho la URL, pero creo que tiene algo que ver con la codificación utilizada por JSoup.connectProblemas de codificación Jsoup.connect (cadena)

De todos modos, ¿cómo procedo para permitir que los enlaces tengan caracteres especiales como: Æ Ø A E, etc, la excepción es que estoy consiguiendo:

java.io.IOException: 500 error loading URL https://maps.googleapis.com/maps/api/place/textsearch/xml?query=Averøy%20restaurant%20og%20Pizzeria,%20Norge&sensor=false&key=xx&radius=10 
at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:414) 
at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:391) 
at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:157) 
at org.jsoup.helper.HttpConnection.get(HttpConnection.java:146) 
at HTMLParser.doParsing(HTMLParser.java:122) 
at HTMLParser.initParser(HTMLParser.java:50) 
at Main.main(Main.java:15) 

el código que está produciendo este error es:

Document gDoc = Jsoup.connect(placesURL).get(); 

Cuando la cadena placesURL es:

https://maps.googleapis.com/maps/api/place/textsearch/xml?query=%s&sensor=false&key=XX&radius=10 

¿Alguien tiene alguna idea para evitar esto?

Gracias!

Respuesta

6

Al encontrar problemas con la codificación URL, le recomiendo que analice su solicitud utilizando primero una herramienta de codificación de URL (StackOverflow answer regarding those). Uno ya viene con Java.

URLEncoder.encode(stringToBeEncoded, "UTF-8") 

Su uso en su cadena sin formato anterior, debe ser algo como:

Document gDoc = JSoup.connect(placesURL.format(URLEncoder.encode(queryString, "UTF-8")); 

... para no URL-codificar toda su URL, sólo la parte de la consulta que necesita ser compatible con UTF-8 (o UTF-16).

+1

% s es la cadena que está procesando la consulta (a través de String.Format) y ya obtuve una clave, utilizando URLEncoder.encode (stringToBeEncoded, "UTF-8"), me dio un error de URL mal formado; java.lang.IllegalArgumentException: URL mal formada: https% 3A% 2F% 2Fmaps.googleapis.com% 2Fmaps% 2Fapi% 2Fplace% 2Ftextsearch% 2Fxml% 3Fquery% 3D1001% 2520Natt% 2C% 2520Norge% 26sensor% 3Dfalse% 26key% lkg% 26radius % 3D10 – user1677631

+0

En este caso, solo usará URLEncoder en la parte de "consulta" de su cadena ... por ejemplo JSoup.connect (placesURL.format (URLEncoder.encode (queryString, "UTF-8")); –

4

Qué estúpida de mí, en lugar de codificar la cadena de consulta, I codificada toda la URL ..

que resuelve hacer esto:

String placesUrl = String.format("https://maps.googleapis.com/maps/api/place/textsearch/xml?query=%s&sensor=false&key=XX&radius=10",URLEncoder.encode(restaurantListe[i][0],"UTF-8")); 

Gracias por la ayuda!

+1

Ya no estoy seguro de quién merece la "mejor respuesta", jaja. Me alegro de poder ayudar. –

Cuestiones relacionadas