目前Android開發(fā)過程中的網(wǎng)絡框架層出不窮,選擇的方式很廣。目前很多服務端開發(fā)也進入了Restful API接口化,對于Restful API的接口建議讀者使用Retrofit框架比較好,本文是主要針對非Restful API的一個輕量級網(wǎng)絡封裝庫,并且刪除了其他的請求方式僅保留了GET/POST請求,當然該庫對于Restful API,照樣可以使用。
歡迎加入交流群:微信群(AndroidRunner )、QQ群(314896948)
歡迎關注微信公眾號:AndroidRunner
網(wǎng)絡封裝主要基于是okhttp2.7.5,okio1.8.0,至于okhttp3,讀者可以在這基礎上改造,修改幾個小地方即可,由于兼容使用cookie、https雙向認證,該庫仍然使用的是2.x版本okhttp,之前嘗試過升級到okhttp3,但是升級后在cookie上支持沒有達到項目中需要的效果,作者獨特喜歡Square公司出品的框架,真心一個贊,推薦讀者了解并使用,其他主流與Android相關的框架比如圖片加載picasso、注解依賴框架dagger、事件解耦otto、內(nèi)存泄露檢測leakcanary等等,當然Retrofit也是他家出品的。好了閑話不扯,進入正題,上干貨。
網(wǎng)絡庫主要包含兩層:
- 基于okhttp的一層封裝,主要是關于okhttp的一些配置和請求的封裝;
- 另外一層就是提供給業(yè)務邏輯調(diào)用的管理類,這一層盡量力求調(diào)用者方便簡單能夠用一個方法調(diào)用完成網(wǎng)絡的交互。
依賴庫
compile 'com.squareup.okhttp:okhttp:2.7.5' //okhttp
compile 'com.squareup.okio:okio:1.8.0' //okio
compile 'com.alibaba:fastjson:1.2.7' //fastjson
調(diào)用##
/** GET */
public static void get(String url, IRequestCallback iRequestCallback);
/** GET-Silence */
public static void getSilence(String url, IRequestCallback iRequestCallback) ;
/** POST */
public static void post(String url, Map<String, String> paramMap, IRequestCallback iRequestCallback);
/** POST-Silence */
public static void postSilence(String url, Map<String, String> paramMap, IRequestCallback iRequestCallback);
/** download */
public static void download(String url, String filePath, IRequestCallback iRequestCallback);
/** download-Silence */
public static void downloadSilence(String url, String filePath, IRequestCallback iRequestCallback);
/** upload */
public static void upload(String url, Map<String, String> paramMap, Map<String, File> fileMap, IRequestCallback iRequestCallback);
/** upload-Silence */
public static void uploadSilence(String url, Map<String, String> paramMap, Map<String, File> fileMap, IRequestCallback iRequestCallback);
調(diào)用示例##
String url = "http://www.baidu.com";
NetManager.get(url, new IRequestCallback<String>() {//<T> T can be a Javabean
@Override
public void onFailure(Exception e) {
// handle onFailure here
mContent.setText("error!");
}
@Override
public void onSuccess(String string) {
// handle onSuccess here
mContent.setText(string);
}
});
具體封裝邏輯可以查看源碼。
源碼demo地址 : http://download.csdn.net/detail/lzj922718/9540493