注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

天朝布衣田中码农参上

苦逼码农的点点滴滴,请多多指教!

 
 
 

日志

 
 
 
 

Okhttp的封装类okhttp-utils用法  

2017-09-27 06:47:18|  分类: Android |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
一个比较好用的okhttp封装类,官网:https://github.com/hongyangAndroid/okhttp-utils,最新版本是2.3.9。下载地址:点击。需要同时导入okhttp和okio的jar,这两个的相关下载地址可以参看之前的文章《OkHttp的简易使用用法》。如果是在Android Studio使用,请添加:

compile project(':okhttputils')
//或者
compile 'com.zhy:okhttputils:2.3.9'

目前最新版本2.3.9提供了自定义扩展Callback[okhttp-utils目前已经包含StringCallBack , FileCallBack , BitmapCallback三种回调类],自行解析返回结果的代码如下[这里以一个News类为例]:

public abstract class ListNewsCallback extends Callback<List<News>>
{
@Override
public List<User> parseNetworkResponse(Response response) throws IOException
{
String string = response.body().string();
List<News> news = new Gson().fromJson(string, List.class);
return user;
}
}

使用方法也是蛮简便的。
1)GET

OkHttpUtils
.get()
.url("http://593668.com/login.json")
.addParams("username", "593668")
.addParams("password", "593668.com")
.build()
.execute(new StringCallback()
{
@Override
public void onError(Request request, Exception e)
{
//错误
}
@Override
public void onResponse(String response)
{
//成功
}
});

2)POST

OkHttpUtils
.post()
.url("http://593668.com/login.json")
.addParams("username", "hyman")
.addParams("password", "123")
.build()
.execute(callback);

3)POST JSON

OkHttpUtils
.postString()
.url("http://593668.com/login.json")
.content('{"username":"593668","password":"593668.com"}')
.build()
.execute(new MyStringCallback());

4)POST FILE

OkHttpUtils
.postFile()
.url("http://593668.com/upload.json")
.file(file)
.build()
.execute(new MyStringCallback());

5)如需要上传多个文件

OkHttpUtils.post()//
.addFile("mFile", "593668_logo.jpg", file)//
.addFile("mFile", "59366.txt", file2)//
.url("http://593668.com/upload.json")
.params(params)//其它参数
.headers(headers)//上传header
.build()
.execute(new MyStringCallback());

6)下载文件

OkHttpUtils//
.get()
.url("http://593668.com/logo.png")
.build()
.execute(new FileCallBack(Environment.getExternalStorageDirectory().getAbsolutePath(), "logo.png")//设置文件下载后的保存地址
{
@Override
public void inProgress(float progress)
{
//设置进度条
mProgressBar.setProgress((int) (100 * progress));
}
@Override
public void onError(Request request, Exception e)
{
//出错
Log.e(TAG, "onError :" + e.getMessage());
}

@Override
public void onResponse(File file)
{
//执行成功
Log.e(TAG, "onResponse :" + file.getAbsolutePath());
}
});

7)下载图片并显示

OkHttpUtils
.url("http://593668.com/logo.png")
.build()
.execute(new BitmapCallback()
{
@Override
public void onError(Request request, Exception e)
{
//出错
mTv.setText("onError:" + e.getMessage());
}

@Override
public void onResponse(Bitmap bitmap)
{
//执行成功
mImageView.setImageBitmap(bitmap);
}
});

8)以上都是异步,如需同步,execute方法不传入callback即可。

Response response = OkHttpUtils.get().url("http://593668.com/logo.png").build().execute();

通过以上方法基本上可以满足项目的需求了,如果需要对此封装类有更深入的请自行去其官网查看文档。
  评论这张
 
阅读(1)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018