Skip to content

XHttp网络请求隔离框架

王兴春 edited this page Jun 12, 2017 · 4 revisions

1、它的产生

在Android开发过程中,我们都发现了http网络请求类的框架,更新的非常快!但是很多人封装的不是很好,一旦想更换其他框架,你就需要修改很多重复代码,所以有了这个需求,我封装了这个XHttp隔离框架,其实不是很难,灵感来自于代理设计模式。

2、它的功能?

  • 1:低耦合,轻量级,使用简单。
  • 2:可配置,一行代码就能随意切换。
  • 3:可自动解析json,你也可以随意采用json解析框架。
  • 4:可以自定义Http引擎实现类,可以随意扩展功能。

3、初始化 XHttp 引擎?

自定义引擎案例: AsyncHttpEngine OKHttpEngine VolleyHttpEngine

public class App extends XApplication {
    @Override
    public void onCreate() {
        super.onCreate();
        /**
             初始化网络请求的引擎,在这里可以一行代码切换,避免更换网络框架麻烦的问题
             提供三种常见框架的简单案例:(你也可以按照例子自己实现)
             AsyncHttpEngine、OKHttpEngine、VolleyHttpEngine
         */
        XFrame.initXHttp(new AsyncHttpEngine());
    }
}

4、调用网络请求

/**
 * 调用 网络请求 get方法
 * @param url 请求url
 * @param params 参数,没有可以传一个空集合 or null
 * @param HttpCallBack<T> 回调接口,T 为你想返回的类型(String or entity)
 *         传入String 返回类型就是String
 *         传入你的实体类,就会自动解析为你的实体类(这个代码需要在Http引擎中实现)
 */
 XHttp.obtain().get(url, params , new HttpCallBack<String>() {
            @Override
            public void onSuccess(String result) {   
            }

            @Override
            public void onFailed(String error) {  
            }
        });

5、自定义Http引擎

//实现IHttpEngine 后,你可以在里面尽情发挥,亦可以参照上面初始化时提供的几种例子进行实现
public class CustomHttpEngine implements IHttpEngine {
    @Override
    public void get(String url, Map<String, Object> params, HttpCallBack callBack) {
        //在这里调用第三方库的get请求方法,同时亦可以进行返回结果解析,完全独立出来,不用担心以前的耦合问题了
    }

    @Override
    public void post(String url, Map<String, Object> params, HttpCallBack callBack) {

    }
}

6、公用方法

 //获取类型,我们在进行json解析时,并不知道是什么类型,那么通过这个方法获取吧!
 Class<?> cls= XHttp.analysisClassInfo(callBack);