2016-06-15 3 views
0

Я пытаюсь выполнить API и попытаться получить ответ json, но я получаю ошибку как "Disallowed Key Characters" для bf.readLine().Ошибка «Недопустимые ключевые символы» в json-файле

Ниже приведен код, который я пытаюсь использовать. Но когда я запускаю URL-адрес запроса в веб-браузере, я получаю ответ без проблем. Но с помощью java-кода я не могу извлечь данные. Пожалуйста, помогите

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

Вы не указали кодировку для 'InputStreamReader'. JSON обычно использует UTF-8. Кроме того, JSON не ориентирован на линию, поэтому 'readLine()', вероятно, не подходит для использования в любом случае. Вместо этого рассмотрим использование 'Gson.fromJson()', который принимает вход 'Reader'. –

+0

взгляните на это >> https://stackoverflow.com/questions/4964640/reading-inputstream-as-utf-8 –

ответ

0

попробовать это

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

вместо

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

потому, что вам нужно добавить метод кодирования, с помощью которого BufferedReader возможность кодировать любой специальный символ в правильном формате.

Надеюсь, это может вам помочь.

Thank you.

0

Я также нашел решение для вопроса и публикации для справки.

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())); 
Смежные вопросы