Android最流行的網路架構

來源:互聯網
上載者:User

標籤:

轉自:http://www.cnblogs.com/peiandsky/p/4376718.html

 

Android程式最重要的模組就是網路部分,如何從網路上下載資料,如何將處理過的資料上傳至網路,往往是android程式的關鍵環節。

       Android原生提供基於HttpClient和HttpUrlConnection的兩種網路訪問方式。利用原生的這兩種方式編寫網路代碼,需要自己考慮很多,擷取資料或許可以,但是如果要將手機本機資料上傳至網路,根據不同的web端介面,需要組織不同的資料內容上傳,給手機端造成了很大的工作量。       目前有幾種快捷的網路開發開源架構,給我們提供了非常大的便利,他們應該是android網路處理部分開源架構的前三名。       1.https://github.com/loopj/android-async-http                        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的一種原因。
                 2.https://github.com/kevinsawicki/http-request
                         對於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();
            對於小項目,這種網路架構簡直就是一種幸福的選擇。                            3.https://github.com/square/okhttp                                    相比於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開發人員一樣可以在瀏覽器中查看手機訪問網路的即時資訊,查看提交和返回結果,大大的方便了開發,這個工具的使用將會專門寫一篇部落格來進行講解。

        

Android最流行的網路架構

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.