Ich versuche, mehrere Bilder von der URL-Adresse herunterladen. Nachdem ich Byte [] zu Bitmap decodiere und es zu ImageView setze. Dieser Code funktioniert perfekt.Rxjava2, Retrofit2, Bild als Byte-Array herunterladen
Request request = new Request.Builder()
.url(imageUrl)
.build();
new OkHttpClient().newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {}
@Override
public void onResponse(Call call, Response response) throws IOException {
try {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
int current;
while ((current = response.body().byteStream().read()) != -1) {
outputStream.write((byte) current);
}
byte[] array = outputStream.toByteArray();
..........
}
}
});
Aber wenn ich rxjava2 verwende, und Retrofit2 funktioniert es nicht. Byte-Array kommt mit vielen 0 Werten aus.
public interface ImageApi {
@GET
Observable<ResponseBody> requestImage(@Url String utl);}
Observable(imageUrl()).subscribe(new Observer<ResponseBody>() {
@Override
public void onSubscribe(@NonNull Disposable d) {}
@Override
public void onNext(@NonNull ResponseBody responseBody) {
try {
if (responseBody != null && responseBody.bytes() != null) {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
int current;
while ((current = responseBody.byteStream().read()) != -1) {
outputStream.write((byte) current);
}
byte[] array = outputStream.toByteArray();
}
}
Was mache ich falsch? Welcher Unterschied besteht zwischen OkHttpClient-Anfrage und Retrofit2?
p.s. Ich brauche Glide oder Picasso nicht.