Как в этом примере , я хочу измерить прогресс загрузки, но не для изображения, вместо простой base64
строки.Эта строка обычно составляет ок.Длина 500 КБ.
Как и в примере, я расширил тело из RequestBody
OkHttp3 и переписал:
@Override
public void writeTo(BufferedSink sink) throws IOException {
StringReader in = new StringReader(base64);
char[] buffer = new char[2048];
int uploaded = 0;
try {
int read;
while ((read = in.read(buffer, uploaded, buffer.length)) != -1) {
uploaded += read;
System.out.println("BUFFER " + buffer);
sink.write(new String(buffer).getBytes(), 0, read);
this.callback.onProgressUpdate(uploaded);
}
} catch(IndexOutOfBoundsException e) {
System.err.println("IndexOutOfBoundsException uploaded " + uploaded + " , buffer " + buffer.length + " from total " + base64.length());
} finally {
in.close();
this.callback.onFinish(uploaded);
}
}
Я могу прочитать первые 2048 символов успешно, но для второго раунда впока я получаю IndexOutOfBoundsException
?