0
URLアドレスから複数の画像をダウンロードしようとしています。その後、私はバイト[]をビットマップにデコードし、それをImageViewに設定します。このコードは完璧に機能します。Rxjava2、Retrofit2、バイト配列として画像をダウンロード
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();
..........
}
}
});
私がrxjava2を使用し、retrofit2を使用してもうまくいきません。バイト配列には多くの0の値があります。
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();
}
}
私は間違っていますか? OkHttpClientリクエストとRetrofit2の違いは何ですか?
p.s.私はグライドやピカソを使う必要はありません。