標籤:error: ora ttext exec nts pat 技術分享 ase cas
okhttp-utils是張鴻洋是基於OkHttp封裝的架構庫。實際工作中,使用的不多,對於小型項目的網路請求和檔案傳輸可以考慮直接使用。否則還是基於主流的OkHttp+Retrift+RxJava架構。
對於OkHttp使用,可以自己根據自己項目需要,做一些封裝。如果應付手頭臨時項目,可以借鑒GitHub上一些開源OkHttp封裝庫.只要去GitHub上搜尋下OkHttp 會出來很多封裝的架構。
分析okhttp-utils使用,只是用於自己學習瞭解。
一.將okhttp-utils當做module引入項目中
二.okhttp-utils引入到項目中檔案清單目錄:
三.okhttp-utils 基本使用 1. //get 請求資料
OkHttpUtils .get() .url(url) .id(100) .build() .execute(new MyStringCallback());
2.//post 請求資料
OkHttpUtils .postString() .url(url) .mediaType(MediaType.parse("application/json; charset=utf-8")) .content(new Gson().toJson(new User("zhy", "123"))) .build() .execute(new MyStringCallback());
3.//上傳檔案
OkHttpUtils .postFile() .url(url) .file(file) .build() .execute(new MyStringCallback());
4.//載入圖片
OkHttpUtils .get() .url(url) .tag(this) .build() .connTimeOut(20000) .readTimeOut(20000) .writeTimeOut(20000) .execute(new BitmapCallback() { @Override public void onError(Call call, Exception e, int id) { mTv.setText("onError:" + e.getMessage()); } @Override public void onResponse(Bitmap bitmap, int id) { Log.e("TAG", "onResponse:complete"); mImageView.setImageBitmap(bitmap); } });
5.//上傳單個檔案
OkHttpUtils.post()// .addFile("mFile", "messenger_01.png", file) .url(url) .params(params)//帶表單資料 .headers(headers) .build() .execute(new MyStringCallback());
6.//上傳多個檔案
OkHttpUtils.post() .addFile("mFile", "messenger_01.png", file) .addFile("mFile", "test1.txt", file2) .url(url) .params(params)//帶表單資料 .build() .execute(new MyStringCallback());
7.//下載檔案
OkHttpUtils .get() .url(url) .build() .execute(new FileCallBack(Environment.getExternalStorageDirectory().getAbsolutePath(), "gson-2.2.1.jar") { @Override public void onBefore(Request request, int id) { } @Override public void inProgress(float progress, long total, int id) { //進度條顯示 mProgressBar.setProgress((int) (100 * progress)); Log.e(TAG, "inProgress :" + (int) (100 * progress)); } @Override public void onError(Call call, Exception e, int id) { Log.e(TAG, "onError :" + e.getMessage()); } @Override public void onResponse(File file, int id) { Log.e(TAG, "onResponse :" + file.getAbsolutePath()); } });
定義的公用回調方法:
public class MyStringCallback extends StringCallback { @Override public void onBefore(Request request, int id) { } @Override public void onAfter(int id) { } @Override public void onError(Call call, Exception e, int id) { e.printStackTrace(); } @Override public void onResponse(String response, int id) { Log.e(TAG, "onResponse:complete"); mTv.setText("onResponse:" + response); switch (id) { case 100: Toast.makeText(MainActivity.this, "http", Toast.LENGTH_SHORT).show(); break; case 101: Toast.makeText(MainActivity.this, "https", Toast.LENGTH_SHORT).show(); break; } } @Override public void inProgress(float progress, long total, int id) { Log.e(TAG, "inProgress:" + progress); mProgressBar.setProgress((int) (100 * progress)); } }
Android 開源架構 ( 二 ) 基於OkHttp進一步封裝的okhttp-utils介紹