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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!