
Envoyé par
franck06
Bonjour,
j'essaie depuis peu d'attaquer un webservice sur le net, qui me retourne un résultat Json.
En parsant ça en Java, je me suis rendu compte que le format retourné n'était pas standard, j'ai des caractères spéciaux qui s'affichent dans mon IHM présentant le résultat de la requête.
voici le code utilisé :
1 2 3 4 5 6 7 8 9 10 11 12
| url = new URL(purl);
URLConnection conn = url.openConnection();
conn.setRequestProperty("Accept-Charset", "ISO-8859-1");
conn.setDoOutput(true);
writer = new OutputStreamWriter(conn.getOutputStream());
writer.flush();
reader = new BufferedReader(new InputStreamReader(
conn.getInputStream()));
String ligne = "";
while ((ligne = reader.readLine()) != null) {
result = result + ligne;
} |
que faut-il rajouté pour avoir du standard et pas de caractères spéciaux dans la réponse ?
merci pour votre aide
Lorsque tu utilises:
conn.setRequestProperty("Accept-Charset", "ISO-8859-1");
Tu signales au WS que tu souhaites recevoir la réponse dans l'encoding "ISO-8859-1".
Le WS t'envoie donc une String encodée en "ISO-8859-1"
Mais lorsque tu créé le reader de la réponse:
1 2
| reader = new BufferedReader(new InputStreamReader(
conn.getInputStream())); |
Tu ne spécifies pas le charset a utiliser à l'InputStreamReader, qui par défaut utilise le Charset configuré au niveau de ta JVM.
Il faut donc que tu utilises:
1 2
| reader = new BufferedReader(new InputStreamReader(
conn.getInputStream(),"ISO-8859-1")); |
A noter qu'aujourd'hui l'encodage UTF-8 est plus courant et qu'il existe des constantes pour les charsets plutôt que des strings:
http://docs.oracle.com/javase/1.5.0/...t/Charset.html
Partager