okhttp

Android4.4的源码中可以看到HttpURLConnection已经替换成OkHttp实现了。所以我们更有理由相信OkHttp的强大。
但是部分api使用仍然需要我们自行封装才能适应自己的需要,今天对OkHttp做的一些封装。
封装okhttp 实现一下功能:
1.实现get,post请求
2.支持上传,下载功能
3.支持Gson泛型解析json数据
4.使用mvc设计模式
5.支持自定义exception
6.支持自定义controller
7.封装glide图片库使用
基本满足日程开发使用

使用方法:android studio中在app的build.gradle中添加依赖
compile project(‘:library’)
具体参考demo

使用介绍:

1.首先需要在项目的application中如下配置:
Cache cache = new Cache(getCacheDir(), 10 * 1024 * 1024);// 配置缓存大小
// 程序初始化时,初始okhttp配置 ,可自行定义
OKHttpConfig OKHttpConfig = new OKHttpConfig.Builder().setBaseResponseClass(BaseResponse.class)
.setConnectTimeout(10).setReadTimeout(10).setWriteTimeout(10).setCache(cache).build();
// 初始化
OKHttpManager.init(this, OKHttpConfig);
2.继承自library重的controller实现自定义加载器:

public abstract class MyAppController<Listener> extends OKHttpController<Listener> {


    public MyAppController() {
        super();
    }

    public MyAppController(Listener l) {
        super();
        setListener(l);
    }

    protected abstract class AppBaseTask<Input, Output> extends LoadTask<Input, Output> {

        @Override
        public boolean onInterceptor(OKBaseResponse response) {
            if (response instanceof BaseResponse) {
                BaseResponse resp = (BaseResponse) response;
                if (!"10000001".equals(resp.getStatus())) {//101表示成功
                    // 主线程中调用onError,不能直接调用onError
                    sendMessage(resp.getMessage(), ERROR_CODE);
                    return true;
                }
            }
            return false;
        }
    }
}

此类是抽象类,具体的子功能可对其继承实现;
下面提供一个实现demo,具体作用demo中有注释:

public class LoadController extends MyAppController<LoadController.LoadListener> {

    public LoadController(LoadListener l) {
        mListener = l;
    }

    public void load(LoadRequest request) {
        Task task = new Task();
        task.load(request, LoadResponse.class);
    }

    /** * 执行加载任务的task,其回调都是在主线程中调用 * 需要加入请求参数LoadRequest和相应参数LoadResponse */
    public class Task extends AppBaseTask<LoadRequest, LoadResponse> {

        @Override
        public IUrl getUrl() {
            // 后去url
            return URLConst.Product.PRODUCTLIST;
        }

        @Override
        public void onSuccess(LoadResponse loadResponse) {
            // 获得加载成功的相应数据,自动解析成LoadResponse
            mListener.onLoadSuccess(loadResponse);
        }

        @Override
        public void onError(OkException e) {
            // 加载失败回调
            mListener.onLoadFail(e);
        }
    }

    /** * 加载回调接口 */
    public interface LoadListener {

        void onLoadSuccess(LoadResponse loadResponse);

        void onLoadFail(OkException e);
    }
}

之后就可在Activity或fragment中进行实例调用了,更多功能请参考demo和源码实现就这么简单实现网络请求。
okhttp_第1张图片
下面提供项目源码和demo供参考;不足之处请各位多多指教,留言啊。。。
demo下载地址github
csdn下载地址

你可能感兴趣的:(源码,android,泛型,okhttp)