? ? 講到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代碼庫保持最新的修復,這意味著再也沒有與舊操作系統版本號出現兼容性問題的噩夢