Foros del Web » Programación para mayores de 30 ;) » Java »

Error en función, Illegal character

Estas en el tema de Error en función, Illegal character en el foro de Java en Foros del Web. Quiero que mi programa abra una página web, con el resultado de la búsqueda de un libro. Me he ido a la página web de ...
  #1 (permalink)  
Antiguo 13/04/2009, 02:55
 
Fecha de Ingreso: febrero-2008
Ubicación: Madrid
Mensajes: 474
Antigüedad: 16 años, 3 meses
Puntos: 1
Exclamación Error en función, Illegal character

Quiero que mi programa abra una página web, con el resultado de la búsqueda de un libro. Me he ido a la página web de la casa del libro, he hecho una búsqueda por título, con la pabra "BUSCADO" y me lleva a la siguiente URL:

http://www.casadellibro.com/busqueda...n=0&lang=es_ES

Si sustituyo "BUSCADO" por una variable y lo pongo en una función debería servir no?

Código:
    public void buscarEnCasaDelLibro(Libro libro) {
        try{
            Desktop.getDesktop().browse(new URI("http://www.casadellibro.com/busquedas/quickResults?tbusq=c&buscar=" + libro.getTitulo() +"&in=0&lang=es_ES"));
        }
        catch( URISyntaxException syex){
            syex.printStackTrace();
        }
        catch( IOException ioex){
            ioex.printStackTrace();
        }
    }
Si busco por ejemplo "El Quijote" me da el siguiente error en tiempo de ejecución:

java.net.URISyntaxException: Illegal character in query at index 68: http://"http://www.casadellibro.com/...sq=c&buscar=El quijote&in=0&lang=es_ES"

¿Qué le pasa? Muchas gracias.
  #2 (permalink)  
Antiguo 13/04/2009, 05:11
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Error en función, Illegal character

¿Te pasa también si en lugar de buscar El Quijote buscas sólo Quijote?
  #3 (permalink)  
Antiguo 13/04/2009, 05:57
Avatar de elAntonie  
Fecha de Ingreso: febrero-2007
Mensajes: 894
Antigüedad: 17 años, 3 meses
Puntos: 10
Respuesta: Error en función, Illegal character

Wenas

La propia url te esta dando la solucion

http://www.casadellibro.com/busqueda...n=0&lang=es_ES

Sustituye el espacio por un mas (+)

Saludos.
  #4 (permalink)  
Antiguo 13/04/2009, 08:31
 
Fecha de Ingreso: febrero-2008
Ubicación: Madrid
Mensajes: 474
Antigüedad: 16 años, 3 meses
Puntos: 1
Respuesta: Error en función, Illegal character

Efectivamente, son los espacios en blanco lo que hace que vaya mal.

¿Alguna función que sustituya un caracter por otro de un string? jeje
  #5 (permalink)  
Antiguo 13/04/2009, 09:03
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Error en función, Illegal character

Mira la clase URLencoder
  #6 (permalink)  
Antiguo 13/04/2009, 12:32
 
Fecha de Ingreso: febrero-2008
Ubicación: Madrid
Mensajes: 474
Antigüedad: 16 años, 3 meses
Puntos: 1
Respuesta: Error en función, Illegal character

Cita:
Iniciado por venkman Ver Mensaje
Mira la clase URLencoder
Cuando pueda la veo, muchas gracias!!!!
  #7 (permalink)  
Antiguo 15/04/2009, 04:53
 
Fecha de Ingreso: febrero-2008
Ubicación: Madrid
Mensajes: 474
Antigüedad: 16 años, 3 meses
Puntos: 1
Exclamación Respuesta: Error en función, Illegal character

Igual estoy utilizando mal la función, lo que hago es esto:
Código:
Desktop.getDesktop().browse(new URI( encode ("http://www.casadellibro.com/busquedas/quickResults?tbusq=c&buscar=" + libro.getTitulo() +"&in=0&lang=es_ES")));
Y me da error de compilación, me dice: "cannot find symbol", vamos que no reconoce la función, he dado a "fix imports" por si acaso pero no lo ha arreglado.

¿qué estoy haciendo mal? gracias.
  #8 (permalink)  
Antiguo 15/04/2009, 07:14
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Error en función, Illegal character

URLEncoder.encode(...)
  #9 (permalink)  
Antiguo 15/04/2009, 08:07
 
Fecha de Ingreso: febrero-2008
Ubicación: Madrid
Mensajes: 474
Antigüedad: 16 años, 3 meses
Puntos: 1
Exclamación Respuesta: Error en función, Illegal character

He utilizado la función URLEncoder.encode(String s, String enc) porque con 1 solo parámetro me dice que la función está obsoleta y no me deja usarla.

mi código es el siguiente:

Código:
public boolean buscarEnCasaDelLibro(Libro libro) {
        try{
            Desktop.getDesktop().browse(new URI(URLEncoder.encode("http://www.casadellibro.com/busquedas/quickResults?tbusq=c&buscar=" + libro.getTitulo() +"&in=0&lang=es_ES", "UTF-8")));
            return true;
        }
        catch( URISyntaxException syex){
            syex.printStackTrace();
            return false;
        }
        catch( IOException ioex){
            ioex.printStackTrace();
            return false;
        }
    }
No me da errores de compilación, pero en tiempo de ejecución siempre me casca, da igual el titulo que le meta, con o sin espacios... El error que me sales es:

java.io.IOException: Failed to open http%3A%2F%2Fwww.casadellibro.com%2Fbusquedas%2Fqu ickResults%3Ftbusq%3Dc%26buscar%3Dinformatica+tont os%26in%3D0%26lang%3Des_ES. Error message: El sistema no puede hallar el archivo especificado.
  #10 (permalink)  
Antiguo 16/04/2009, 03:21
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Error en función, Illegal character

No tienes que hacerle el encode a todo. Sólo al título.
  #11 (permalink)  
Antiguo 16/04/2009, 05:04
 
Fecha de Ingreso: febrero-2008
Ubicación: Madrid
Mensajes: 474
Antigüedad: 16 años, 3 meses
Puntos: 1
Respuesta: Error en función, Illegal character

Ahora ya va como la seda, gracias por tu paciencia y ayuda.
  #12 (permalink)  
Antiguo 16/04/2009, 05:28
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Error en función, Illegal character

De nada. Me alegro de que te funcione :)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:42.