use*_*304 16 java image download okhttp
我想问一下如何在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());
}
Run Code Online (Sandbox Code Playgroud)
小智 24
尝试这样的事情
InputStream inputStream = response.body().byteStream();
Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
Run Code Online (Sandbox Code Playgroud)
小智 9
也许现在回答这个问题有点晚了,但它可能会在未来对某人有所帮助。我更喜欢在后台下载照片,使用 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
}
}
});
Run Code Online (Sandbox Code Playgroud)