セッションでファイルをダウンロードする必要があるため、Javaでokhttpclientを使用してイメージファイルをダウンロードする方法を尋ねます。
これは公式に与えられたコードですが、イメージファイルとしてダウンロードするためにそれを使用する方法がわかりません。
private final OkHttpClient client = new OkHttpClient();
public void run() throws Exception {
Request request = new Request.Builder()
.url("http://publicobject.com/helloworld.txt")
.build();
Response response = client.newCall(request).execute();
if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);
Headers responseHeaders = response.headers();
for (int i = 0; i < responseHeaders.size(); i++) {
System.out.println(responseHeaders.name(i) + ": " + responseHeaders.value(i));
}
System.out.println(response.body().string());
}
このようなものを試してください
InputStream inputStream = response.body().byteStream();
Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
質問に答えるのは少し遅いかもしれませんが、将来的に誰かを助けるかもしれません。私は常にバックグラウンドで写真をダウンロードすることを好みます。OkHttpClientを使用するには、コールバックを使用する必要があります。
final Request request = new Request.Builder().url(url).build();
okHttpClient.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
//Handle the error
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if (response.isSuccessful()){
final Bitmap bitmap = BitmapFactory.decodeStream(response.body().byteStream());
// Remember to set the bitmap in the main thread.
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
imageView.setImageBitmap(image);
}
});
}else {
//Handle the error
}
}
});