java根據url下載圖片,Android使用HttpURLConnection下載圖片

 2023-10-08 阅读 25 评论 0

摘要:? ? 講到http就必須要了解URI和URL URI (uniform resource identifier)統一資源標志符; URL(uniform resource location )統一資源定位符(或統一資源定位器); 能夠理解成URL是URI的子集,URI是一抽象的標識符,URL能夠理解成詳細的標

? ? 講到http就必須要了解URI和URL

URI (uniform resource identifier)統一資源標志符;
URL(uniform resource location )統一資源定位符(或統一資源定位器);

能夠理解成URL是URI的子集,URI是一抽象的標識符,URL能夠理解成詳細的標識符;僅僅要是網絡上的資源就能找到唯一的URL。

java根據url下載圖片、文件夾結構


效果圖


Android圖片識別。關鍵代碼

HttpUtils.java類

package com.dzt.downloadimage.utils;import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;import android.graphics.Bitmap;
import android.graphics.BitmapFactory;/*** http工具類 http能夠使用HttpURLConnection或HttpClient* * @author Administrator* @date 2014.05.10* @version V1.0*/
public class HttpUtils {/*** 獲取網絡圖片* * @param urlString*            如:http://f.hiphotos.baidu.com/image/w%3D2048/sign=3*            b06d28fc91349547e1eef6462769358*            /d000baa1cd11728b22c9e62ccafcc3cec2fd2cd3.jpg* @return* @date 2014.05.10*/public static Bitmap getNetWorkBitmap(String urlString) {URL imgUrl = null;Bitmap bitmap = null;try {imgUrl = new URL(urlString);// 使用HttpURLConnection打開連接HttpURLConnection urlConn = (HttpURLConnection) imgUrl.openConnection();urlConn.setDoInput(true);urlConn.connect();// 將得到的數據轉化成InputStreamInputStream is = urlConn.getInputStream();// 將InputStream轉換成Bitmapbitmap = BitmapFactory.decodeStream(is);is.close();} catch (MalformedURLException e) {// TODO Auto-generated catch blockSystem.out.println("[getNetWorkBitmap->]MalformedURLException");e.printStackTrace();} catch (IOException e) {System.out.println("[getNetWorkBitmap->]IOException");e.printStackTrace();}return bitmap;}
}
使用到網絡必須要加入權限和要有網絡,否則下載失敗

java url、

<uses-permission android:name="android.permission.INTERNET" />
下載屬于耗時的操作,假設放在UI線程出easy出現ANR;所以Android4.0之后對網絡的操作不能放在UI線程,在這里我把下載放在AsyncTask處理。

class downloadImageTask extends AsyncTask<String, Integer, Boolean> {@Overrideprotected Boolean doInBackground(String... params) {// TODO Auto-generated method stubSystem.out.println("[downloadImageTask->]doInBackground "+ params[0]);mDownloadImage = HttpUtils.getNetWorkBitmap(params[0]);return true;}// 下載完畢回調@Overrideprotected void onPostExecute(Boolean result) {// TODO Auto-generated method stubimage.setImageBitmap(mDownloadImage);System.out.println("result = " + result);super.onPostExecute(result);}// 更新進度回調@Overrideprotected void onProgressUpdate(Integer... values) {// TODO Auto-generated method stubsuper.onProgressUpdate(values);}}
在onPostExecute和onProgressUpdate能夠方便我們更新UI,當然也能夠開一個線程處理,使用AsyncTask就更方便。

完整Demo:http://download.csdn.net/detail/deng0zhaotai/7326005

Android不使用布局文件,網絡上一個不錯的資源:http://square.github.io/okhttp/

OkHttp是Square的一款產品,是一個Java的開源HTTP和SPDYclient開發包,支持Android。Android自帶的兩個HTTP框架(HttpURLConnection和HttpClient),在各種Android OS版本號一直充斥著錯誤,能夠使不論什么理智的開發人員走向崩潰。只是幸運地是,OkHttp攻克了這些問題。OkHttp是建立在HttpUrlConnection上,從Android代碼庫保持最新的修復,這意味著再也沒有與舊操作系統版本號出現兼容性問題的噩夢


版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/2/132338.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息