Android 支持網絡協議以及簡單用法
Android對網絡編程提供3中接口,即:Java接口,Apache接口,Android接口。Android提供了對 HTTP,SSL,Cookie,DHCP等協議的封裝,并支持套接字編程,同時對UTI也提供了支持。另外,還提供了連接管理器和WiFI管理器來增強對網絡的支持。
1、HTTP協議:
Android中HTTP協議的主要體現在android.net.http和org.apache.http等包中。在 android.net.http包中,主要通過AndroidHttpClient來實現HTTP協議,AndroidHttpClient實際上就是實現了org.apache.http.client.HttpClient,實際上就是DefaultHttpClient的子類,通過 AndroidHttpClient newInstance(String userAgent, Context context)方法獲得一個實例。其能夠處理Cookie,但是在默認情況下無法維護Cookie,設置Cookie的方法:
context.setAttribute(ClientContext.COOKIE_STORE,cookieStore);
AndroidHttpClient通常和HttpHost、HttpUriRequest、HttpContext、ResponseHandler一起發起HTTP請求以及處理服務器響應。
2、SSL協議:
針對Web的網絡安全協議,常見的HTTPS鏈接就采用了SSL技術,SSL協議的實現與數字證書密切相關。在android.net.http包中提供了SslCertificate和SslError來描述X509數字證書信息。在WebView中通過getCertificate()方法可以 查看當前頁面是否擁有SSL證書。
3、Cookie實現:
Cookie用于識別用戶信息,進行Session跟蹤而存儲在用戶本地終端的數據,Cookie擁有自己的生命周期,可以存儲用戶信息,因此可能暴露用戶信息,使用Cookie具有一定風險。Android中,Cookie的管理主要位于 WebView,java.net,org.apache.http.cookie中,可以通過 httpClient.getCookieStore().getCookies()來或得Cookie,使用Cookie的相關方法可以獲得 Cookie的信息。在WebView中,CookieManager可以用來設置、清除和獲取Cookie。清空Cookie的方法 CookiewManager.getInstance().removeAllCookie();
另:Cookie的信息保存在data\data\com.android.browser\databases目錄下的webview.db中。
4、連接性管理:
Android通過ConnectivityManager提供對網絡如WiFi,UMTS,GPRS的連接性管理。通過 ConnectivityManager。getActiveNetworkInfo()方法可以獲得介入方式,判斷網絡類型和當前狀態。需要有權限 android.permission.ACCESS_NETWORK_STATE.當網絡發生變化時,系統會廣播Action為 android.net.conn.CONNECTIVITY_CHANGE的Intent消息。
5、WiFi管理:
對WiFi的管理,Android提供了WifiManager來進行管理。獲取WiFi服務的的方法,context.getSystemService(WIFI_SERVICE);通過該服務可以獲得設備可用網絡的列表,獲得當前激活網絡的信息,執行熱點掃描,測定信號強度等等。其具體方法可以自行查看API。Android4.0開始支持WiFi點對點的通信,獲得WifiP2pManager 服務的方法如下:
WifiP2pManager p2pManager = (WifiP2pManager) getSystemService(WIFI_P2P_SERVICE);
為了進行點對點同學需要下面幾個步驟:
①通過initialize()初始化P2P連接
②通過discoverPeers()發現附近的設備
③通過connect()啟動P2P連接。