Recibo la siguiente advertencia cuando uso java.net.URLEncoder.encode
:
advertencia: codificación [obsoleta] (java.lang.String) en java.net.URLEncoder ha quedado en desuso
¿Qué debería usar en su lugar?
java
url
network-programming
deprecated
Frank Krueger
fuente
fuente
Respuestas:
Use el otro
encode
método en URLEncoder :El primer parámetro es el texto a codificar; el segundo es el nombre de la codificación de caracteres a usar (por ejemplo,
UTF-8
). Por ejemplo:fuente
StandardCharsets.US_ASCII
,StandardCharsets.UTF_8
etc. Por desgracia,URLEncoder.encode
no acepta unCharset
... (pero muchas otras moethods hacer).URLEncoder.encode(<urlStringToBeEncoded>, StandardCharsets.UTF_8.name())
. El uso de la constante estáticaUTF_8
'stoString()
método como el esquema de codificación de caracteres lanzajava.nio.charset.IllegalCharsetNameException: java.nio.charset.CharsetICU[UTF-8]
como lostoString()
retornos 'java.nio.charset.CharsetICU [UTF-8]'. Para obtener el "UTF-8" deseado, utilice suname()
método.Deberías usar:
fuente
Use la clase URLEncoder :
Dónde :
Cajas estándar:
Ejemplo:
fuente
El primer parámetro es la cadena a codificar; el segundo es el nombre de la codificación de caracteres a utilizar (por ejemplo, UTF-8).
fuente
Como referencia adicional para las otras respuestas, en lugar de usar "UTF-8" puede usar:
HTTP.UTF_8
que se incluye desde Java 4 como parte de la biblioteca org.apache.http.protocol, que también se incluye desde Android API 1.
fuente
org.apache.http.protocol.HTTP
clase de biblioteca Apache HttpClient 4.x.El uso de
org.apache.commons.httpclient.URI
no es estrictamente un problema; lo que es un problema es que apuntas al constructor incorrecto, que se deprecia.Usando solo
De hecho lo marcará como depreciado. Lo que se necesita es proporcionar como mínimo un argumento adicional (el primero, a continuación), e idealmente dos:
escaped
: verdadero si la secuencia de caracteres URI está en forma de escape. falso de lo contrario.charset
: la cadena charset para hacer la codificación de escape, si es necesarioEsto apuntará a un constructor no depreciado dentro de esa clase. Entonces, un uso ideal sería como tal:
Un poco loco al final del juego (un pelo más de 11 años después, ¡por ejemplo! ), Pero espero que esto ayude a alguien más, especialmente si el método en el otro extremo todavía espera un URI, como
org.apache.commons.httpclient.setURI()
.fuente