要注意的是:访问网络不能直接放在主线程,要放在另外一个线程里面,如果放在主线程会报android.os.NetworkOnMainThreadException错误
public Bitmap getImageFromNet(String uri) {
HttpURLConnection conn = null;
try {
// 1.首先将地址转换为Uri
// Uri net_uri = Uri.parse(uri); //这种方式是错误的
URL url = new URL(uri);
// 2. 获取网络连接
conn = (HttpURLConnection) url.openConnection(); // 这个地方要转换一次,转换为你获取图片的协议连接
// 3. 设置请求的一些常用的参数
conn.setConnectTimeout(30000);// 设置超时
conn.setDoInput(true); // 设置请求可以放服务器写入数据
conn.setReadTimeout(30000); // 设置连接去读取数据的超时时间
// 4.真正请求图片,然后把从网络上请求到的二进制流保存到了inputStream里面
conn.connect();
// 5.确保链接成功,获取inputStream流
if (conn.getResponseCode() == 200) {
InputStream in = conn.getInputStream();
// 6. BitMap的图片工厂,创建出一个图片
Bitmap bitmap = BitmapFactory.decodeStream(in);
return bitmap;
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
// 7. 关闭连接
if (null != conn) {
conn.disconnect();
}
}
return null;
}
通过URLHttpConnection方式连接网络步骤,获取位图为例
最新推荐文章于 2024-03-09 23:50:11 发布