У меня есть веб-сервис, возвращающий ответ json, ответ json содержит как текстовые, так и кодированные изображения base64, я использую эту службу, используя приложение Android, поэтому я реализовал индикатор выполнения, чтобы указать прогресс .Передача Base64 Строка через службу Http REST с ответом JSON
Выполнение строки выполнения заставляет меня использовать BufferedInputStream для чтения ответа и обновления прогресса на основе того, что приложение читает.
Проблема в том, что все работает нормально, и прогресс обновляется правильно, но после сбора ответа и выхода из цикла while я пытаюсь преобразовать строку в json-формат с помощью JSONObject. Вот фрагмент кода
BufferedInputStream bis = new BufferedInputStream(responseEntity.getContent());
StringBuilder sb = new StringBuilder();
String line = null;
int total = 0 ;
int count = 0 ;
byte[] buffer = new byte[4096];
StringBuffer sBuffer = new StringBuffer();
StringWriter sw = new StringWriter();
String content = new String();
while((count = bis.read(buffer)) > 0){
content += new String(buffer,Charset.defaultCharset());
total += count;
publishProgress(""+(int)total*100/this.contentSize);
Log.i("updating",""+(int)total*100/this.contentSize);
}
bis.close();
// String content = new String(sb);
// Log.i("ServerRawresponse",content);
try {
Log.i("REsponse_Content",content.replaceAll("\"", ""));
responseString = new JSONObject(new JSONTokener(content.replaceAll("\"", "\\\"")));
//System.out.println(content);
} catch (JSONException e) {
e.printStackTrace();
}
Любая помощь, пожалуйста,
Спасибо !! На самом деле я пробовал htis раньше, но проблема в том, что этот код будет считать ответ в виде одной строки, поэтому прогресс будет идти от 0 до 100% напрямую –