我做错什么了?我得到200 ok的响应,但是图像位图是 null
. 我用 Asynctask
检索url图像。我正在尝试将位图分配给imageview。
有什么想法吗?
private class loadMoreListView extends AsyncTask< Void, Void, String> {
protected String doInBackground(Void... unused) {
loadingMore = true;
Bitmap mIcon11 = null;
try {
URL url1 = new URL("https://imgaz2.staticbg.com/thumb/view/oaupload/ser1/banggood/images/E4/21/c5424852-82af-47a1-8a13-54da3d1bc049.jpg");
HttpURLConnection connection = (HttpURLConnection) url1.openConnection();
connection.setReadTimeout(10000);
connection.setConnectTimeout(10000);
connection.setDoInput(true);
connection.setRequestMethod("GET");
connection.setUseCaches(false);
connection.setAllowUserInteraction(false);
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
int responceCode = connection.getResponseCode();
Log.i("response_line", Integer.toString(responceCode));
InputStream isstream =null;
isstream=connection.getInputStream();
//inputstream named isstream returns null
mIcon11 = BitmapFactory.decodeStream(isstream);
} catch (Exception e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
return result;
}
1条答案
按热度按时间slsn1g291#
看看毕加索/毕加索github。
它允许你在几行代码中做你想做的事情(注意,在android28+httpurl上,除非你做一些额外的工作,否则是不可能的):
它处理图像、线程、占位符、转换等的下载、内存或磁盘缓存和回收。不需要重新发明轮子。你甚至可以调整图像大小,并有各种裁剪选项
更新:
正如其他人提到的,你不应该使用
AsyncTask
因为它被弃用了。有许多其他库可以用来以线程化和更可读的方式(如volley)发出网络请求。这可以与毕加索配合使用,达到你想要的效果。下面是一个从google加载一些文本以及加载文本后的图像的示例:
内部版本.gradle:
androidmanifest.xml:
fragment\u first.xml:
firstfragment.java文件: