封装安卓的okhttp
1.封装了get方法,handler更新主线程,回调的onsuccess,onfailure,onerror等方法
2.配置文件
api 'com.android.support:recyclerview-v7:26.1.0'
api 'com.squareup.okhttp3:okhttp:3.9.1'
//fastjson
api 'com.alibaba:fastjson:1.2.44'
3.先建立一个http包,建BaseHttpCallback和OkHttpHelper这2个类,以后会加loading...这个东西
public class OkHttpHelper {
private static OkHttpClient okHttpClient;
private android.os.Handler handler;
private OkHttpHelper(){
okHttpClient =new OkHttpClient();
handler =new android.os.Handler(Looper.getMainLooper());
};
public static OkHttpHelper getInstance(){
return new OkHttpHelper();
}
public void get(String url,BaseHttpCallback baseHttpCallback){
Request request = buildRequest(url,null,HttpMethodType.GET);
doRequest(request, baseHttpCallback);
}
public void post(String url, Map<String,String>params,BaseHttpCallback baseHttpCallback){
Request request = buildRequest(url,null,HttpMethodType.POST);
doRequest(request, baseHttpCallback);
}
public void doRequest(final Request request, final BaseHttpCallback baseHttpCallback){
baseHttpCallback.onRequestBefore(request);
okHttpClient.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
callbackFailure(baseHttpCallback,e);
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if(response.isSuccessful()){
String s= response.body().string();
callbackSuccess(baseHttpCallback,response,s);
}else{
callbackError(baseHttpCallback,response,response.code());
}
}
});
}
private Request buildRequest(String url,Map<String,String> params,HttpMethodType methodType){
Request.Builder builder = new Request.Builder();
builder.url(url);
if(methodType==HttpMethodType.GET){
builder.get();
}else if(methodType==HttpMethodType.POST){
}
return builder.build();
}
enum HttpMethodType{
GET,
POST
}
private void callbackSuccess(final BaseHttpCallback callback, final Response response, final String s){
handler.post(new Runnable() {
@Override
public void run() {
callback.onSuccess(response,s);
}
});
}
private void callbackError(final BaseHttpCallback callback, final Response response, final int code){
handler.post(new Runnable() {
@Override
public void run() {
callback.onError(response,code,null);
}
});
}
private void callbackFailure(final BaseHttpCallback callback, final Exception e){
handler.post(new Runnable() {
@Override
public void run() {
callback.onFailure(e);
}
});
}
}
public abstract class BaseHttpCallback {
public abstract void onRequestBefore(Request request);
public abstract void onSuccess(Response response,String string);
public abstract void onError(Response response,int code,Exception e);
public abstract void onFailure(Exception e);
}
4. 还另外封装了个User类
public class User {
public String result;
public List<Data> data;
public class Data{
public String name;
public String age;
public String getName() {
return name;
}
public String getAge() {
return age;
}
}
public String getResult() {
return result;
}
public List<Data> getDatas() {
return data;
}
}
5.activity中调用例子
OkHttpHelper httpHelper =OkHttpHelper.getInstance();
String url = "http://www.baidu.com";
httpHelper.get(url,new BaseHttpCallback(){ @Override
public void onRequestBefore(Request request) { } @Override
public void onSuccess(Response response, String string) { } @Override
public void onError(Response response, int code, Exception e) { } @Override
public void onFailure(Exception e) {
Toast.makeText(MainActivity.this,"当前网络不可用,请检查网络",Toast.LENGTH_LONG).show();
}
});
6.未完善的,没有post,没有loading效果,
封装安卓的okhttp的更多相关文章
- 安卓通过OkHttp获取json数据
使用Http协议访问网络 OkHttp使用 可以很好的获取接口数据!json数据! 支持get和post提交方式!!! 1.引入模块 compile 'com.squareup.okhttp3:okh ...
- okhttp +fastJson 在UI层的回调封装
一直使用OkHttp 经常烦人的地方是回调方法 数据解析后必须通过handler 在主线程做操作 网上找了很多资料 发现有些都是基于Gson做的解析 fastJson 在封装时 泛型传入会有很多不方 ...
- 如何合理封装你的轮子、飞机、大炮(以封装OkHttp为例)
前言 对于程序员来说,很多时候,我们都在造房子,从学会框架或者是学会构建整个项目之后,慢慢的我们就会觉得自己在做的事情是一种重复劳动,很多时候只不过是换个面孔而已.而更快的造房子,造好看的房子可能是进 ...
- 安卓开发常用网络请求框架OkHttp、Volley、XUtils、Retrofit对比
网络请求框架总结1.xutils 此框架庞大而周全,这个框架可以网络请求,同时可以图片加载,又可以数据存储,又可以 View 注解,使用这种框架很方便,这样会使得你整个项目对它依赖性太强,万一 ...
- OKHttp使用详解
一,OKHttp介绍 okhttp是一个第三方类库,用于android中请求网络. 这是一个开源项目,是安卓端最火热的轻量级框架,由移动支付Square公司贡献(该公司还贡献了Picasso和Leak ...
- 框架--NoHttp和OkHttp哪个好用,Volley和NoHttp哪个好用?
NoHttp和OkHttp哪个好用,Volley和NoHttp哪个好用? NoHttp 源码及Demo托管在Github欢迎大家Star: https://github.com/Y0LANDA/NoH ...
- 【Android - 框架】之OkHttp的使用
OkHttp是一个非常优秀的网络访问框架,当下非常火的Retrofit的底层就是使用OkHttp进行封装的.接下来介绍以下OkHttp的简单使用. 1.导入依赖 在Android Studio中,在M ...
- Android中使用OKHttp上传图片,从相机和相册中获取图片并剪切
效果:注意:1:网络权限<;;;); intent.putExtra(); ); intent.putExtra(); intent.putExtra(, byteArrayOutputStre ...
- Xutils, OKhttp, Volley, Retrofit对比
Xutils这个框架非常全面,可以进行网络请求,可以进行图片加载处理,可以数据储存,还可以对view进行注解,使用这个框架非常方便,但是缺点也是非常明显的,使用这个项目,会导致项目对这个框架依赖非常的 ...
随机推荐
- Python3爬虫(十二) 爬虫性能
Infi-chu: http://www.cnblogs.com/Infi-chu/ 一.简单的循环串行一个一个循环,耗时是最长的,是所有的时间综合 import requests url_list ...
- 如何将h5网页改成微信网页
1.如何将h5网页改成微信网页 1.设置安全域名 先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”. 备注:登录后可在“开发者中心”查看对 ...
- Oozie Coordinator job 之定时任务
使用 Coordinator job 可以执行定时任务和时间触发执行 需要注意的是 Oozie 默认使用的时区与中国时区不是一致的,需要进行一点修改 1.关于时区 a.修改 core-site.xml ...
- CC3200作为STA模式连接路由器sl_WlanConnect出现exception occured at:0xa72fcf6
1. 先看下出错的提示 2. 出错的代码部分,现在问题是定位不到哪一行代码出问题,反正运行一段时间就进入了 lRetVal = sl_WlanConnect((signed , &secPar ...
- 【赛后补题】(HDU6223) Infinite Fraction Path {2017-ACM/ICPC Shenyang Onsite}
场上第二条卡我队的题目. 题意与分析 按照题意能够生成一个有环的n个点图(每个点有个位数的权值).图上路过n个点显然能够生成一个n位数的序列.求一个最大序列. 这条题目显然是搜索,但是我队在场上(我负 ...
- Linux-Shell脚本编程-学习-4-Shell编程-操作数字-加减乘除计算
对于任何一种编程语言都很重要的特性就是操作数字的能力,遗憾的是,对于shell脚本来说,这个过程比较麻烦,在shell脚本中有两种途径来进行数学运算操作. 1.expr 最开始的时候,shell提供了 ...
- 做小Leader的心得体会
只是自己的工作心得体会,代码属于也不够专业,大家不喜勿喷. 8月份来到这家新公司,没过一个月给派了个活:带着两个小弟给某银行开发一个小工具.功能很简单,就是用Java做一个windows上的C端工具, ...
- 自动化测试元素查找利器firepath介绍
自动化测试查找元素和确定元素xpath路径是否正确在业界有个很好的工具就是firefox 浏览器的 firepath 问题: firefox 最新版本已经不支持firebug和firepath这两个插 ...
- BZOJ 2333 SCOI2011 棘手的操作 并查集+可并堆
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2333 ..题意概述就不写了,各位老爷如果是看着玩的可以去搜一下,如果是做题找来的也知道题干 ...
- 【转】Virtual DOM
前言 React 好像已经火了很久很久,以致于我们对于 Virtual DOM 这个词都已经很熟悉了,网上也有非常多的介绍 React.Virtual DOM 的文章.但是直到前不久我专门花时间去学习 ...