Android使用Http協議訪問網絡
Http協議工作原理大致可以理解為:客戶端向服務器發出一條HTTP請求,服務器收到請求後返回一些數據給客戶端,客戶端對收到數據解析。
在Android6.0以前,Android上發送Http請求主要有兩種方式:HttpURLConnection和HttpClient。其中HttpClient存在過多的API且難擴展,於是在Android6.0系統中,HttpClient被完全移除,如需使用,需導入相應文件。這裏介紹最近我最近學習的HttpURLConnection的基本使用方法,然後接下來介紹一種當下比較流行的網絡通信庫Okhttp。
Android獲取網絡數據主要有get和post方法,get表示從服務器獲取數據,Post表示提交數據給服務器。
1.首先新建一個HttpURLConnectionDemo文件,添加兩個按鈕,分別表示使用get方法與post方法。
2.為按鈕添加點擊事件,分別執行doGet與doPost方法。
- Get請求
註意,這裏的方法必須在子線程中執行,否則運行時會報android.os.NetworkOnMainThreadException錯誤,表示不能在主線程中執行網絡請求。
- Post請求
當然,最重要的一點,在訪問網絡之前,需要申明網絡權限,修改AndroidManifest.xml中的代碼,
之後運行代碼,就可以得到相應數據。
可以看出使用HttpURLConnection比較繁瑣,我們可以使用當前流行的OkHttp網絡通信庫代替它。Okhttp是由大名鼎鼎的Square公司開發,簡單易用。初學者可以通過HttpURLConnection了解其網絡訪問流程,但在實際項目開發過程中,使用比較多的是Okhttp,Okhttp的項目主頁地址是:http://github.com/square/okhttp.
1. 在使用Okhttp之前,需要在項目中添加依賴項,通過訪問Okhttp項目主頁地址查找當前Okhttp的最新版本號。
2.然後點擊右上角的,完成同步。新建項目,這裏在前面HttpURLConnextionDemo基礎上修改。
3.在HttpURLConnextionDemo基礎上申明一個OkHttpClient,
4.分別使用兩種請求獲取數據,其中get請求使用同步請求方法,post請求使用的是異步請求回調的方法。
- get請求
- post請求
Android使用Http協議訪問網絡