Okhttp封装类+日志拦截器+添加请求头

日志拦截器

public class LogInterceptorUtils implements Interceptor {
    @Override
    public Response intercept(Chain chain) throws IOException {
        Request request = chain.request();
        HttpUrl url = request.url();//获取请求地址
        String method = request.method();//获取请求方式
        Response response = chain.proceed(chain.request());//
        String content = response.body().string();//获取请求内容
        Log.i("LogInterceptor", "请求接口:" + url);
        Log.d("LogInterceptor", "请求方式:" + method);
        Log.w("LogInterceptor", "请求内容:" + content);

        Headers headers = request.headers();//获取请求头
        Set<String> names = headers.names();//请求头名字集合
        Iterator<String> iterator = names.iterator();
        while (iterator.hasNext()) {
            String next = iterator.next();
            String value = headers.get(next);
            Log.i("LogInterceptor", "请求头字段=" + next + ":自己填的字段=" + value);
        }
        return chain.proceed(request);
    }
}

请求头拦截器

public class OkHeaderInterceptor implements Interceptor {
   
    @Override
    public Response intercept(Chain chain) throws IOException {
        Request request = chain.request();
        Request.Builder builder = request.newBuilder();
        
builder.addHeader("version", "version1.0");
builder.addHeader("platform", "android");
builder.addHeader("sessionId", SpUtils.getString("sessionId"));
builder.addHeader("userId", SpUtils.getInt("userId", 0) + "");
        request = builder.build();
        return chain.proceed(request);
    }
}

OK callBack封装

public class MyCallBack implements Callback {
    private Type type;
    private ICallBack iCallBack;
    private Handler handler;

    public MyCallBack(Type type, ICallBack iCallBack) {
        this.type = type;
        this.iCallBack = iCallBack;
        handler = new Handler();
    }

    @Override
    public void onFailure(Call call, final IOException e) {
        //将失败的异常返回去
        handler.post(new Runnable() {
            @Override
            public void run() {
                iCallBack.onFailed(e);
            }
        });
    }

    @Override
    public void onResponse(Call call, Response response) throws IOException {
        //获取到响应码
        int code = response.code();
        //获取到响应数据
        String jsonData = response.body().string();
        //创建Gson,将相应数据解析
        Gson gson = new Gson();
        final Object o = gson.fromJson(jsonData, type);
        switch (code) {
            case 200://响应码为200,返回去数据
                if (iCallBack != null) {
                    //切换线程将数据返回去
                    handler.post(new Runnable() {
                        @Override
                        public void run() {
                            iCallBack.onSuccess(o);
                        }
                    });
                }
                break;
            case 404:
                iCallBack.onFailed(new Exception("路径不存在,请检查接口"));
                break;
            case 303:

                break;
            default:
                iCallBack.onFailed(new Exception("服务器异常"));
                break;
        }
    }
}

网络请求封装类

public class MyCallBack implements Callback {
    private Type type;
    private ICallBack iCallBack;
    private Handler handler;

    public MyCallBack(Type type, ICallBack iCallBack) {
        this.type = type;
        this.iCallBack = iCallBack;
        handler = new Handler();
    }

    @Override
    public void onFailure(Call call, final IOException e) {
        //将失败的异常返回去
        handler.post(new Runnable() {
            @Override
            public void run() {
                iCallBack.onFailed(e);
            }
        });
    }

    @Override
    public void onResponse(Call call, Response response) throws IOException {
        //获取到响应码
        int code = response.code();
        //获取到响应数据
        String jsonData = response.body().string();
        //创建Gson,将相应数据解析
        Gson gson = new Gson();
        final Object o = gson.fromJson(jsonData, type);
        switch (code) {
            case 200://响应码为200,返回去数据
                if (iCallBack != null) {
                    //切换线程将数据返回去
                    handler.post(new Runnable() {
                        @Override
                        public void run() {
                            iCallBack.onSuccess(o);
                        }
                    });
                }
                break;
            case 404:
                iCallBack.onFailed(new Exception("路径不存在,请检查接口"));
                break;
            case 303:

                break;
            default:
                iCallBack.onFailed(new Exception("服务器异常"));
                break;
        }
    }
}

猜你喜欢

转载自blog.csdn.net/Lsnzf3134/article/details/84983244