Java - Algo no hago bien con URLDecoder

 
Vista:
Imágen de perfil de Pedro
Val: 305
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Algo no hago bien con URLDecoder

Publicado por Pedro (102 intervenciones) el 15/04/2020 23:12:09
Tengo un String de la siguiente manera.

1
2
3
4
5
6
7
8
9
10
11
String retorno_url="\u003cb\u003eplugin \u003c\/b\u003ewordpress\u003cb\u003e mantenimiento\u003c\/b\u003e";
 
//Estoy usando el siguiente método para decodearlo.
 
String result =URLDecoder.decode( retorno_url, "UTF-8" );
 
/*
No consigo decodearlo a un string normal supongo que el problema
es porque lo que espera es un url y no un String
*/
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Camilo
Val: 110
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Algo no hago bien con URLDecoder

Publicado por Camilo (25 intervenciones) el 16/04/2020 05:15:53
Buenas noches

El problema parece ser la barra lateral "\" que no la lee bien el String al ser un carácter especial, aquí dejo una URL que si funciona

1
2
3
String retorno_url="https%3A%2F%2Fmywebsite%2Fdocs%2Fenglish%2Fsite%2Fmybook.do%3Frequest_type";
String result =URLDecoder.decode(retorno_url,"UTF-8");
System.out.println(result);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Pedro
Val: 305
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Algo no hago bien con URLDecoder

Publicado por Pedro (102 intervenciones) el 16/04/2020 09:39:11
He logrado medio solucionar el problema pero tengo problemas con los acentos.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/*===============>
Lo que marco en el siguiente String viene de una petición https y formado con un
StringBuilder --> To String.
Si de alguna manera se pudiera recoger la petición y formarla a UTF-8 creo que el
problema de los uniscape y de los acentros se solucionaría.
================>*/
 
String line ="["cami�n",["cami�n",[["cami�n",0]";
 
if(line.contains("\\u"))
{
    System.out.println(sb1.toString());
    line=line.replaceAll("\\\\u003cb\\\\u003e", "");
    line=line.replaceAll("\\\\u003c\\\\/b\\\\u003e", "");
    line=line.replaceAll("\\\\u003csc\\\\u003e", "");
    line=line.replaceAll("\\\\u003c\\\\/sc\\\\u003e", "");
    line=URLDecoder.decode(line,"UTF-8");
 
   System.out.println(line);
 
  //La salida es esta cami�n \n cami�n de bomberos\n
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Pedro
Val: 305
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Algo no hago bien con URLDecoder

Publicado por Pedro (102 intervenciones) el 18/04/2020 00:55:51
Ya he solucionado el problema y pongo el código para que le pueda servir a otra persona.

Con el siguiente código leemos los acentos , ñ en el response.

1
2
3
4
5
6
7
8
9
10
11
12
HttpURLConnection con = (HttpURLConnection) url1.openConnection();
con.setRequestProperty("User-Agent", "Windows NT 6.1; WOW64) AppleWebKit/534+ (KHTML, like Gecko");
Charset charset = Charset.forName("ISO-8859-1");
BufferedReader in = new BufferedReader
(new InputStreamReader(con.getInputStream(),charset));
String inputLine;
while ((inputLine = in.readLine()) != null)
{
 sb.append(inputLine);
}
String text2 = new String(sb.toString().getBytes("UTF-8"));
System.out.println(text2);

Living and learning
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar