¿Cómo puedo codificar valores dinámicos de cadena para crear instancias de URL? Necesito reemplazar espacios con% 20, acentos, caracteres no ASCII ...? Intenté usar URLEncoder pero también codifica el carácter '/' y si doy una cadena codificada con URLEncoder al constructor de URL obtengo una MalformedURLException (sin protocolo).Java - codificar URL
Respuesta
Lo que usted dice es que quiere codificar parte de su URL pero no todo. Me parece que tendrás que dividirlo en partes, pasar las que codifiques a través del codificador y volver a montarlas para obtener toda la URL.
URLEncoder
tiene un muy nombre engañoso. De acuerdo con el Javadocs utilizó los parámetros de formulario de codificación utilizando el tipo MIME application/x-www-form-urlencoded
.
Con esto dicho se puede utilizar para codificar, por ejemplo, parámetros de consulta. Por ejemplo, si un parámetro se parece a su equivalente &/?#
codificada puede ser utilizado como:
String url = "http://host.com/?key=" + URLEncoder.encode("&/?#");
A menos que tenga esas necesidades especiales del URL javadocs sugiere el uso de new URI(..).toURL
que realiza URI de codificación de acuerdo con RFC2396.
La forma recomendada para gestionar la codificación y decodificación de direcciones URL es utilizar URI
El siguiente ejemplo de
new URI("http", "host.com", "/path/", "key=| ?/#ä", "fragment").toURL();
produce el resultado http://host.com/path/?key=%7C%20?/%23ä#fragment
. Tenga en cuenta que los caracteres tales como ?&/
son codificados en.
Para obtener más información, consulte los mensajes HTTP URL Address Encoding in Java o how to encode URL to avoid special characters in java.
EDITAR
Debido a que su entrada es una url cadena, usando uno de los constructor con parámetros de URI
no le ayudará. Tampoco puede usar new URI(strUrl)
directamente ya que no cita los parámetros de url.
Así que en esta etapa se debe utilizar un truco para conseguir lo que quiere:
public URL parseUrl(String s) throws Exception {
URL u = new URL(s);
return new URI(
u.getProtocol(),
u.getAuthority(),
u.getPath(),
u.getQuery(),
u.getRef()).
toURL();
}
Antes de poder utilizar esta rutina que tiene que sanitize
la cadena para asegurarse de que representa un absoluta url. Veo dos enfoques para esto:
Adivinando. Prefiera
http://
a la cadena a menos que ya esté presente.crear la dirección URL de un contexto usando
new URL(URL context, String spec)
- 1. Cómo codificar URL para evitar caracteres especiales en Java?
- 2. ¿Por qué necesita codificar URL?
- 3. Cómo codificar URL en Groovy?
- 4. Url Codificar Javascript objeto literal
- 5. codificar Por qué URL, o qué caracteres para codificar
- 6. URL Codificar todo no alfanumérico en C#
- 7. Cómo codificar períodos para URL en Javascript?
- 8. ¿Cómo codificar los parámetros de URL?
- 9. Cómo codificar una URL en WinForms?
- 10. Cómo codificar (.) Punto en url Rails
- 11. ¿Cómo codificar correctamente los acentos de URL?
- 12. cómo codificar en url en android?
- 13. Java codificar y .NET decodificación
- 14. Diferencia en URL decodificar/codificar UTF-8 entre Java y JS/AS3 (¿error??)
- 15. ¿Cómo codificar los parámetros de URL en QT?
- 16. ASP.NET MVC Html.ActionLink URL de resultado: la forma de codificar
- 17. Código para descodificar/codificar una base64 URL modificada
- 18. Cómo codificar medios en base64 URL dada en Ruby
- 19. Cómo URL parámetros codificar en ASP .NET MVC
- 20. cómo codificar URL usando PHP como los navegadores hacer
- 21. Cómo codificar URL contiene caracteres Unicode con PHP
- 22. ¿Cómo codificar URL correctamente una cadena en PHP?
- 23. Encriptar/Codificar una ID en la cadena de URL
- 24. ¿Cómo codificar la siguiente URL utilizando JavaScript o jQuery correctamente?
- 25. ¿Cómo codificar una cadena URL completa en ASP MVC
- 26. ¿Cómo puedo URL codificar una cadena en Excel VBA?
- 27. ¿Debo usar encodeURI o encodeURIComponent para codificar URL?
- 28. Cómo codificar url en javascript y descodificarlo en C#
- 29. Cómo codificar por ciento los parámetros de URL en Python?
- 30. ¿Se puede codificar la barra invertida correctamente en URL con reescritura de URL?
Por favor, dar algún ejemplo de cuerdas y estás código. –
diferentes reglas de codificación se aplicarán a diferentes [partes del URI] (http://illegalargumentexception.blogspot.com/2009/12/java-safe-character-handling-and-url.html#URI2009_ANATOMY). Como sugiere Lukas, proporcione ejemplos de la información con la que comienza y con qué desea terminar. – McDowell