2016-06-15 2 views
0

J'essaie d'exécuter l'API et j'essaie d'obtenir la réponse json, mais j'obtiens l'erreur "Disallowed Key Characters" pour bf.readLine().Erreur de "caractères clés non autorisés" dans la sortie json

Voici le code que j'essaie d'utiliser. Mais quand je cours l'URL de demande dans le navigateur Web j'obtiens la réponse sans issue. Mais en employant le code de java je ne peux pas extraire des données. S'il vous plaît aider

String uri = "http://192.168.77.6/Ivr_ABN_API/?id?id=" 
      + mobile; 
    URL url; 
    Gson json = null; 
    try { 
     url = new URL(uri); 
     json = new Gson(); 

     HttpURLConnection connection; 
     access_token = db.getAccessTokenFromDB(); 
     connection = (HttpURLConnection) url.openConnection(); 
     connection.setRequestMethod("GET"); 

     System.out.println("URL:" + uri); 

     connection.setRequestProperty("Content-Type", "application/json"); 
     int status = connection.getResponseCode(); 
     resCode = Integer.toString(status); 


       InputStream in = connection.getInputStream(); 
       BufferedReader bf = new BufferedReader(
         new InputStreamReader(in)); 
       System.out.println("bf.readLine() - "+bf.readLine()); 

       while ((output = bf.readLine()) != null) { 
        JSONObject obj = new JSONObject(output); 
        System.out.println("output is "+output); 
        resCode = obj.getString("resCode"); 
        resDesc = obj.getString("COUNT"); 

       } 


     connection.disconnect(); 
+0

Vous ne spécifiez pas de jeu de caractères pour 'InputStreamReader'. JSON utilise généralement UTF-8. De plus, JSON n'est pas orienté ligne, donc 'readLine()' n'est probablement pas la bonne approche à utiliser quand même. Pensez à utiliser 'Gson.fromJson()' à la place, ce qui prend un 'Reader' en entrée. –

+0

jetez un oeil à ceci >> https://stackoverflow.com/questions/4964640/reading-inputstream-as-utf-8 –

Répondre

0

essayer cette

BufferedReader in = new BufferedReader(new InputStreamReader(in, StandardCharsets.UTF_8)); 

au lieu de

BufferedReader bf = new BufferedReader(new InputStreamReader(in)); 

parce que vous devez ajouter technique de codage par lequel un BufferedReader capable d'encoder un caractère spécial au format approprié.

Espérons que cela pourrait vous aider.

Merci.

0

J'ai également trouvé une solution pour la question et l'affichage pour votre référence.

HttpURLConnection connection; 
connection = (HttpURLConnection) url.openConnection(); 
     connection.setRequestMethod("GET"); 
connection.setRequestProperty("Accept", "application/json"); 
     connection.setRequestProperty("Content-Type", "application/json"); 
     int status = connection.getResponseCode(); 
BufferedReader bf = new BufferedReader(new InputStreamReader(
       connection.getInputStream()));