Android最流行的網絡框架(原創)

        Android程序最重要的模塊就是網絡部分,如何從網絡上下載數據,如何將處理過的數據上傳至網絡,每每是android程序的關鍵環節。java

       Android原生提供基於HttpClient和HttpUrlConnection的兩種網絡訪問方式。利用原生的這兩種方式編寫網絡代碼,須要本身考慮不少,獲取數據或許能夠,可是若是要將手機本地數據上傳至網絡,根據不一樣的web端接口,須要組織不一樣的數據內容上傳,給手機端形成了很大的工做量。
       目前有幾種快捷的網絡開發開源框架,給咱們提供了很是大的便利,他們應該是android網絡處理部分開源框架的前三名。
            
            loopj這款開源框架一直是我鍾愛的網絡框架,在我寫過的至關多的程序中,一直使用該框架,以致於對這個框架產生了厭倦的情緒。
            太詳細的使用文檔,太簡單的使用方式,它就像是一門高級語言,定製好了全部的東西,你只須要拼湊一下就可以處理,因此你想定製更加細節的操做,只有本身動手,反而形成了一些沒必要要的麻煩。
            loopj在前一段時間對https的支持並很差,若是要支持https,則須要費點功夫。
            1.4幾個版本的升級對前部分代碼的承接性不夠好,形成了我對這個框架的厭倦。
            
                    
                    獲取一張圖片:
 
AsyncHttpClient client = new AsyncHttpClient();
client.get("http://example.com/file.png", new FileAsyncHttpResponseHandler(/* Context */ this) {
@Override
public void onSuccess(int statusCode, Header[] headers, File response) {
// Do something with the file `response`
}
});
構造請求參數:
RequestParams params = new RequestParams();
params.put("key", "value");
params.put("more", "data");
 loopj提供了各類關於返回參數的解析ResponseHandler,這也是我變得不喜歡loopj的一種緣由。
        
            
 
            對於Loopj來講,HttpRequest就是一種簡單粗暴,一個請求能夠涵蓋在一句代碼當中,不給任何一點冗餘的成分。
String response = HttpRequest.get("http://google.com").body();
                    將數據打印到控制檯,或者其餘的流:   
HttpRequest.get("http://google.com").receive(System.out);
                    忽略https的安全:
                    
HttpRequest request = HttpRequest.get("https://google.com");
//Accept all certificates
request.trustAllCerts();
//Accept all hostnames
request.trustAllHosts();
            對於小項目,這種網絡框架簡直就是一種幸福的選擇。
                    
 
         
            
            相比於loopj和HttpRequest,okhttp要更爲強大,使用方式也稍顯複雜,可是倒是我目前最喜歡的感受。
            這是著名公司Square的開源框架,出手不凡。
            下面貼出我項目中的代碼:
          
                    OkHttpClient client = new OkHttpClient();
                    client.networkInterceptors().add(new StethoInterceptor());

                    RequestBody body = new FormEncodingBuilder()
                            .add("data", data).add("token", getToken(data))
                            .add("system", "sample").build();

                    Request request = new Request.Builder()
                            .url("http://sample.com/api/v1")
                            .post(body).build();
                    Response response = client.newCall(request).execute();
                    final String reslut = response.body().string();
 
     在上述代碼中有這樣一行代碼:
        client.networkInterceptors().add(new StethoInterceptor());
        這是使用facebook的開源stetho來進行查看網絡訪問狀況的一個工具。
okhttp能夠經過chrome的開發工具來查看手機的網絡訪問狀況,就和web開發人員同樣能夠在瀏覽器中查看手機訪問網絡的實時信息,查看提交和返回結果,大大的方便了開發,這個工具的使用將會專門寫一篇博客來進行講解。
相關文章
相關標籤/搜索