Android 6.0+ HttpClient 弃用解决方法:使用 HttpURLConnection 或 OkHttp
这个问题是因为在Android 6.0及以上版本中,'HttpClient'已被废弃,需要使用'HttpURLConnection'或'OkHttp'等替代方案来进行网络请求。
以下是使用'HttpURLConnection'替代的方法:
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.util.Log;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
@Override
protected Bitmap doInBackground(String... urls) {
String urlDisplay = urls[0];
Bitmap bitmap = null;
try {
URL url = new URL(urlDisplay);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true);
connection.connect();
InputStream input = connection.getInputStream();
bitmap = BitmapFactory.decodeStream(input);
} catch (Exception e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
return bitmap;
}
}
在这个替代方案中,我们使用'HttpURLConnection'来进行网络请求,并使用'BitmapFactory'来解析返回的数据流,最终得到'Bitmap'图片。
另外,我们也可以使用'OkHttp'来进行网络请求,以下是使用'OkHttp'的方法:
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.util.Log;
import java.io.IOException;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
public class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
@Override
protected Bitmap doInBackground(String... urls) {
String urlDisplay = urls[0];
Bitmap bitmap = null;
try {
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url(urlDisplay)
.build();
Response response = client.newCall(request).execute();
if (response.isSuccessful()) {
bitmap = BitmapFactory.decodeStream(response.body().byteStream());
}
} catch (IOException e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
return bitmap;
}
}
在这个替代方案中,我们使用'OkHttp'来进行网络请求,并使用'BitmapFactory'来解析返回的数据流,最终得到'Bitmap'图片。
原文地址: https://www.cveoy.top/t/topic/odoa 著作权归作者所有。请勿转载和采集!