Я пытаюсь получить доступ к данным из потока необработанных данных.Прежде чем получить доступ к потоку необработанных данных, я должен проанализировать / удалить любые следы XML.Я делаю это, преобразовывая необработанный поток в массив строк и перебирая каждую строку, чтобы удалить XML.
Я могу разобрать / удалить XML из строки, и я могу воссоздать поток данных.У меня проблема с чтением каждой строки и сохранением каждого значения (год, месяц, день, мощность). Цикл while завершается неудачно с исключением вне строки: int year = bb.get (0);
Я предполагаю, что это происходит из-за того, что созданная строка newResult неправильно читается с помощью метода readLine.Вместо того, чтобы иметь список необработанных данных, есть только одна строка необработанных данных.Согласно спецификации, должно быть 60 (а длина decResult-1 равна 60.
Вот код ниже. Может кто-нибудь помочь мне выяснить, почему цикл while не повторяется по каждой строке? Спасибо.
try {
HttpRequestBase request = null;
request = new HttpGet(urlString);
consumer.sign(request);
Log.v(TAG, "consumer.sign");
HttpResponse response = client.execute(request);
InputStream stream = (InputStream)response.getEntity().getContent();
String result = convertStreamToString(stream);
String[] decResult = result.split("<day raw=\"");
String newResult = "";
if(decResult.length > 1) {
for(int i=1; i<decResult.length; i++) {
decResult[i] = decResult[i].replaceAll("\"\\/>", "");
Log.v(TAG, "DecResult = "+ (decResult[i]).toString());
decResult[i] = decResult[i].replaceAll("</ted5000_mtu_days>","");
Log.v("DayData", decResult[i].toString());
newResult = newResult.concat((decResult[i].toString() + "\n"));
}
}
Log.v("DayData", "newResult = "+ newResult);
Log.v("DayData", "End NewResult");
BufferedReader reader = new BufferedReader(new StringReader(newResult));
String line = null;
while((line = reader.readLine()) != null) {
Log.v("DayData", "****Entering while loop***");
Log.v("DayData", "Line = " + line);
String bytes = Base64.decode(line);
Log.v("DayData", "Received bytes");
ByteBuffer bb = ByteBuffer.wrap(bytes.getBytes());
Log.v("DayData", "ByteBuffer.wrap");
bb.order(ByteOrder.LITTLE_ENDIAN);
int year = bb.get(0);
int month = bb.get(1);
int day = bb.get(2);
int power = bb.getInt(3);
Log.i("DayData", "Date: " + month + "/" + day + "/" + year + " Power: " + power);
}
Log.v("DayData", "Exiting while loop");
} catch (Exception e) {
e.printStackTrace();
Log.e("DayData", "Exception: " + e.toString());
return false;
}
}