2017-10-13 4 views
0

i besoin d'appeler un service obtenir en utilisant la connexion http, la réponse contient des caractères arabes, mais quand je l'appelle à l'aide du code ci-dessousAppel HttpConnection avec le codage ne fonctionne pas

try { 

     HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
     conn.setRequestMethod("GET"); 

     InputStream in = new BufferedInputStream(conn.getInputStream()); 
     response = IOUtils.toString(in, "UTF-8"); 
    } catch (MalformedURLException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (ProtocolException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

le Reponse est

1|U|����� ������|$2|L|���� �������|$3|S|���� 

J'ai essayé une autre solution de ne pas utiliser Commons-io mais aussi ne fonctionne pas

   HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 
      connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 
      connection.setConnectTimeout(5000); 
      connection.setRequestMethod("GET"); 
      connection.connect(); 
      int statusCode = connection.getResponseCode(); 
      //Log.e("statusCode", "" + statusCode); 
      if (statusCode == 200) { 
       sb = new StringBuilder(); 
       reader = new BufferedReader(new InputStreamReader(connection.getInputStream(),"UTF-8")); 

       char[] tmp = new char[1024]; 
       int l; 
       while((l = reader.read(tmp)) != -1) { 
        sb.append(tmp, 0, l); 
       } 
       //sb = buffer.toString(); 
      } 

      connection.disconnect(); 
      if (sb != null) 
       serverResponse = sb.toString(); 

-ce que je nee d changer quoi que ce soit du service web ??? mais quand je l'appelle du navigateur tous les caractères montrent clairement sans aucun problème une suggestion?

Répondre

3

Peut-être que le serveur n'utilise pas UTF-8, votre code essaie d'utiliser UTF-8 pour décoder les données mais cela ne fonctionnera que si le serveur utilise le même codage.

Le navigateur fonctionne parce qu'il utilise peut-être l'en-tête HTTP "Content-Encoding" qui devrait indiquer le codage utilisé pour les données.

+0

Merci youu thats it, j'ai changé la mondialisation dans la configuration web du service Web en UTF-8 – Amalo

1

S'il vous plaît Décode réponse string

String dateStr = URLDecoder.decode(yourStringResponse, "utf-8");