Search in sources :

Example 1 with ResponseErroListener

use of me.jessyan.rxerrorhandler.handler.listener.ResponseErroListener in project MVPArms by JessYanCoding.

the class WEApplication method getGlobeConfigModule.

/**
     * app的全局配置信息封装进module(使用Dagger注入到需要配置信息的地方)
     * GlobeHttpHandler是在NetworkInterceptor中拦截数据
     * 如果想将请求参数加密,则必须在Interceptor中对参数进行处理,GlobeConfigModule.addInterceptor可以添加Interceptor
     * @return
     */
@Override
protected GlobeConfigModule getGlobeConfigModule() {
    return GlobeConfigModule.buidler().baseurl(Api.APP_DOMAIN).globeHttpHandler(new // 这里可以提供一个全局处理http响应结果的处理类,
    GlobeHttpHandler() {

        // 这里可以比客户端提前一步拿到服务器返回的结果,可以做一些操作,比如token超时,重新获取
        @Override
        public Response onHttpResultResponse(String httpResult, Interceptor.Chain chain, Response response) {
            //重新请求token,并重新执行请求
            try {
                if (!TextUtils.isEmpty(httpResult)) {
                    JSONArray array = new JSONArray(httpResult);
                    JSONObject object = (JSONObject) array.get(0);
                    String login = object.getString("login");
                    String avatar_url = object.getString("avatar_url");
                    Timber.tag(TAG).w("result ------>" + login + "    ||   avatar_url------>" + avatar_url);
                }
            } catch (JSONException e) {
                e.printStackTrace();
                return response;
            }
            //如果不需要返回新的结果,则直接把response参数返回出去
            return response;
        }

        // 这里可以在请求服务器之前可以拿到request,做一些操作比如给request统一添加token或者header
        @Override
        public Request onHttpRequestBefore(Interceptor.Chain chain, Request request) {
            //                .build();
            return request;
        }
    }).responseErroListener(new ResponseErroListener() {

        //     用来提供处理所有错误的监听
        //     rxjava必要要使用ErrorHandleSubscriber(默认实现Subscriber的onError方法),此监听才生效
        @Override
        public void handleResponseError(Context context, Exception e) {
            Timber.tag(TAG).w("------------>" + e.getMessage());
            UiUtils.SnackbarText("net error");
        }
    }).build();
}
Also used : Context(android.content.Context) JSONArray(org.json.JSONArray) Request(okhttp3.Request) JSONException(org.json.JSONException) ResponseErroListener(me.jessyan.rxerrorhandler.handler.listener.ResponseErroListener) JSONException(org.json.JSONException) Response(okhttp3.Response) JSONObject(org.json.JSONObject) Interceptor(okhttp3.Interceptor)

Aggregations

Context (android.content.Context)1 ResponseErroListener (me.jessyan.rxerrorhandler.handler.listener.ResponseErroListener)1 Interceptor (okhttp3.Interceptor)1 Request (okhttp3.Request)1 Response (okhttp3.Response)1 JSONArray (org.json.JSONArray)1 JSONException (org.json.JSONException)1 JSONObject (org.json.JSONObject)1