okhttp的輔助類:okhttp-utils
okhttp的輔助類
由于整合了Gson,支持直接返回對象(例如User),對象集合(例如:List<User>),所以記得使用時必須加入Gson的依賴,jar包gson-2.2.1.jar.
sample項目的代碼也上傳了,里面包含依賴神馬的,不過里面的請求url可能部分是無法使用的,因為我是本機做的測試,大家可以下載參考。ps:以module的形式導入。
目前支持
- 一般的get請求
- 一般的post請求
- 基于Http的文件上傳
- 文件下載
- 加載圖片
- 支持請求回調,直接返回對象、對象集合
- 支持session的保持
例如:服務器返回:{"username":"zhy","password":"123"}
客戶端可按照如下發起請求,直接獲得User對象
OkHttpClientManager.getAsyn("http://192.168.56.1:8080/okHttpServer/user!getUser", new OkHttpClientManager.ResultCallback<User>() { @Override public void onError(Request request, Exception e) { e.printStackTrace(); } @Override public void onResponse(User user) { mTv.setText(u.toString());//UI線程 } });
同樣支持List這種集合的方式。
用法
對于Android Studio的用戶,可以選擇添加:
compile 'com.squareup.okhttp:okhttp:2.4.0'
或者Eclipse的用戶,可以下載最新的jar okhttp he latest JAR ,添加依賴就可以用了。
注意:okhttp內部依賴okio,別忘了同時導入okio:
compile 'com.squareup.okio:okio:1.5.0'
最新的jar地址:okio the latest JAR
GET請求
OkHttpClientManager.getAsyn("http://192.168.56.1:8080/okHttpServer/user!getSimpleString", new OkHttpClientManager.ResultCallback<String>() { @Override public void onError(Request request, Exception e) { e.printStackTrace(); } @Override public void onResponse(String u) { mTv.setText(u); } });
直接返回對象
OkHttpClientManager.getAsyn("http://192.168.56.1:8080/okHttpServer/user!getUser", new OkHttpClientManager.ResultCallback<User>() { @Override public void onError(Request request, Exception e) { e.printStackTrace(); } @Override public void onResponse(User u) { mTv.setText(u.toString()); } });
注意會根據傳入的泛型,比如User,則會將服務器返回的Json字符串轉化為user對象,如果在轉化過程中發生錯誤,onError會被回調。記得加入Gson的依賴。
直接返回對象集合
OkHttpClientManager.getAsyn("http://192.168.56.1:8080/okHttpServer/user!getUsers", new OkHttpClientManager.ResultCallback<List<User>>() { @Override public void onError(Request request, Exception e) { e.printStackTrace(); } @Override public void onResponse(List<User> us) { Log.e("TAG", us.size() + ""); mTv.setText(us.get(1).toString()); } });
注意會根據傳入的泛型,比如List,則會將服務器返回的Json字符串轉化為List對象,如果在轉化過程中發生錯誤,onError會被回調。記得加入Gson的依賴。
POST請求
OkHttpClientManager.postAsyn(url,callback,params);
基于HTTP POST的大文件上傳(可包一般鍵值對)
File file = new File(Environment.getExternalStorageDirectory(), "test1.txt"); OkHttpClientManager.postAsyn("http://192.168.1.103:8080/okHttpServer/fileUpload",// callback,// file,// 文件 "mFile",// 文件域的name new OkHttpClientManager.Param[]{ new OkHttpClientManager.Param("username", "zhy")}//一般的鍵值對,可為null );
顯示圖片
OkHttpClientManager.displayImage( mImageView, "http://images.csdn.net/20150817/1.jpg");
會自動根據ImageView的大小進行壓縮。
大文件下載
OkHttpClientManager.downloadAsyn( //文件路徑 "http://192.168.1.103:8080/okHttpServer/files/messenger_01.png", //文件存儲路徑 Environment.getExternalStorageDirectory().getAbsolutePath(), //回調 new OkHttpClientManager.ResultCallback<String>() { @Override public void onFailure(Request request, IOException e) { } @Override public void onResponse(String response) { //如果成功,response為下載完成后文件的完整路徑 } });
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!