Je reçois l'avertissement suivant lors de l'utilisation java.net.URLEncoder.encode
:
avertissement: [obsolescence] encode (java.lang.String) dans java.net.URLEncoder est obsolète
Que dois-je utiliser à la place?
java
url
network-programming
deprecated
Frank Krueger
la source
la source
Réponses:
Utilisez l'autre
encode
méthode dans URLEncoder :Le premier paramètre est le texte à encoder; le second est le nom du codage de caractères à utiliser (par exemple,
UTF-8
). Par exemple:la source
StandardCharsets.US_ASCII
,StandardCharsets.UTF_8
etc. Malheureusement,URLEncoder.encode
n'accepte pasCharset
... (mais beaucoup d' autres moethods faire).URLEncoder.encode(<urlStringToBeEncoded>, StandardCharsets.UTF_8.name())
. En utilisant la constante statiqueUTF_8
detoString()
méthode que le schéma de codage de caractères jettejava.nio.charset.IllegalCharsetNameException: java.nio.charset.CharsetICU[UTF-8]
lestoString()
retours « java.nio.charset.CharsetICU [UTF-8] ». Pour obtenir le "UTF-8" souhaité, utilisezname()
plutôt sa méthode.Tu devrais utiliser:
la source
Utilisez la classe URLEncoder :
Où :
Jeux de caractères standard:
Exemple:
la source
Le premier paramètre est la chaîne à encoder; le second est le nom du codage de caractères à utiliser (par exemple, UTF-8).
la source
Comme référence supplémentaire pour les autres réponses, au lieu d'utiliser "UTF-8", vous pouvez utiliser:
HTTP.UTF_8
qui est inclus depuis Java 4 dans le cadre de la bibliothèque org.apache.http.protocol, qui est également incluse depuis l'API Android 1.
la source
org.apache.http.protocol.HTTP
classe de bibliothèque Apache HttpClient 4.x.L'utilisation de
org.apache.commons.httpclient.URI
n'est pas strictement un problème; le problème est que vous ciblez le mauvais constructeur, qui est déprécié.En utilisant juste
Le signalera en effet comme déprécié. Ce qu'il faut, c'est fournir au moins un argument supplémentaire (le premier, ci-dessous), et idéalement deux:
escaped
: true si la séquence de caractères URI est sous forme d'échappement. faux sinon.charset
: la chaîne de caractères pour effectuer l'encodage d'échappement, si nécessaireCela ciblera un constructeur non amorti au sein de cette classe. Un usage idéal serait donc comme tel:
Un peu fou-tard dans le jeu (un cheveu plus de 11 ans plus tard - par exemple ! ), Mais j'espère que cela aidera quelqu'un d'autre, surtout si la méthode à l'extrémité attend toujours un URI, tel que
org.apache.commons.httpclient.setURI()
.la source