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


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

       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開發人員一樣可以在瀏覽器中查看手機訪問網絡的實時信息,查看提交和返回結果,大大的方便了開發,這個工具的使用將會專門寫一篇博客來進行講解。
 
         
        
 
 
 
 
 
 
       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM