Android - HttpURLConnection下载网络文件,加载网络图片

来源:互联网 发布:剑网3成男捏脸数据 编辑:程序博客网 时间:2024/06/05 12:05

说明:

做sdk开发的时候(sdk不采取任何第三方框架),涉及到下载网络文件,和加载网络图片的功能,由于不能用第三方jar包进行,所以只能用基本的HttpURLConnection把文件作为流来处理,进行下载和加载。

1、HttpURLConnection加载图片

代码:

 /**     * 加载图片ImageView     * @param url 图片网络地址     * @return     */    public void setImageViewBitMap(ImageView imageView, final String url) {        this.imageView = imageView;        new Thread() {            @Override            public void run() {                URL myFileUrl = null;                Bitmap bitmap = null;                try {                    myFileUrl = new URL(url);                } catch (MalformedURLException e) {                    e.printStackTrace();                }                try {                    HttpURLConnection conn = (HttpURLConnection) myFileUrl.openConnection();                    conn.setDoInput(true);                    conn.connect();                    InputStream is = conn.getInputStream();                    bitmap = BitmapFactory.decodeStream(is);                    is.close();                } catch (IOException e) {                    e.printStackTrace();                }                imageBitmap = bitmap;                myHandler.sendEmptyMessage(1);            }        }.start();    }

2、HttpURLConnection下载文件

代码:

/**     * 把js,css保存在本地     * @param uFile 本地存储的文件名File路径     * @param url 将要下载的js,css文件     */     public static void writeUrToStrealm(File uFile, String url) {        try {            URL uri = new URL(url);            URLConnection connection = uri.openConnection();            InputStream uristream = connection.getInputStream();            //String cache = connection.getHeaderField("Ddbuild-Cache");            String contentType = connection.getContentType();            //textml; charset=utf-8            String mimeType = "";            String encoding = "";            if (contentType != null && !"".equals(contentType)) {                if (contentType.indexOf(";") != -1) {                    String[] args = contentType.split(";");                    mimeType = args[0];                    String[] args2 = args[1].trim().split("=");                    if (args.length == 2 && args2[0].trim().toLowerCase().equals("charset")) {                        encoding = args2[1].trim();                    } else {                        encoding = "utf-8";                    }                } else {                    mimeType = contentType;                    encoding = "utf-8";                }            }            //todo:缓存uristream            FileOutputStream output = new FileOutputStream(uFile);            int read_len;            byte[] buffer = new byte[1024];            SaveDataUtils.writeBlock(output, mimeType);            SaveDataUtils.writeBlock(output, encoding);            while ((read_len = uristream.read(buffer)) > 0) {                output.write(buffer, 0, read_len);            }            output.close();            uristream.close();        } catch (Exception e) {            e.printStackTrace();        }    }



0 0
原创粉丝点击