2011-09-21 19 views
5

Necesito codificar los valores de los parámetros en una URL. Si utilizo siguiente:Codificación de valores de parámetros en una URL con Java

URLEncoder.encode(url, "UTF-8"); 

para una URL como esta: http://localhost:8080/...

se codificará ": //", etc. Lo que necesito es la codificación sólo para los valores de los parámetros a partir de toda la Cadena de URL Así que en este caso:

http://localhost/?q=blah&d=blah

QUIERO codificado sólo el "bla" en los valores de los parámetros 2 (para n parámetros, por supuesto).

¿Cuál es tu mejor manera?

Gracias

Randomize

Respuesta

5

Estás usando URLEncoder de una manera incorrecta. Se supone que debe codificar cada valor de parámetro por separado y luego ensamblar la url juntos.

Por ejemplo


String url = "http://localhost/?q=" + URLEncoder.encode ("blah", "UTF-8") + "&d=" + URLEncoder.encode ("blah", "UTF-8"); 

+0

Sí lo sé, el problema es que tengo una La URL ya está "lista" y no tengo forma de cambiar el código que la genera – Randomize

+0

¿Por qué entonces necesita codificarla? ¿Contiene caracteres no ASCII? –

+1

Luego necesitará construir una 'URL' y obtener los params (o dividirlos en el primer'? 'Si confía en la validez de la URL), dividirlos en' & '(si no desea eso codificado), codifícalos y luego recíbelo. –

2

Para una URL como http://localhost/hello/sample?param=bla, podría utilizar esto (de la clase java.net.URI de Java):

URI uri = new URI("http", "localhost", "/hello/sample", "param=bla", null); 
String url = uri.toASCIIString(); 
+0

de esta manera necesita preensamblar la cadena de consulta utilizando URLEncoder para codificar caracteres especiales. Y como resultado, Randomize tiene toda la url como entrada, no sus partes. –

+0

Bueno, la URL se puede romper (dividir) fácilmente en dichas partes y pasar. – Saket

Cuestiones relacionadas