您的位置:首页 > 理论基础 > 计算机网络

Android----OKHttp网络请求-拦截器

2017-12-06 19:42 211 查看
封装一个请求网络工具类


public class HttpUtils {

    private static HttpUtils httpUtils;

    private final OkHttpClient client;

    private HttpUtils() {

        //创建OkHttpClient

        //创建拦截器

        client = new OkHttpClient.Builder()

                .addInterceptor(new MyInterceptor())

                .build();

    }

    public static HttpUtils getHttpUtils() {

        if (httpUtils == null) {

            synchronized (HttpUtils.class) {

                if (httpUtils == null) {

                    httpUtils = new HttpUtils();

                }

            }

        }

        return httpUtils;

    }

    /**

     * GET请求

     *

     * @param url      请求地址

     * @param callback 回调

     */

    public void doGet(String url, Callback callback) {

        Request request = new Request.Builder().url(url).build();

        client.newCall(request).enqueue(callback);

    }

    /**

     * POST请求

     *

     * @param url      请求地址

     * @param params   请求的参数

     * @param callback 回调

     */

    public void doPost(String url, Map<String, String> params, Callback callback) {

        //这里可以加网络判断

        //判断参数

        if (params == null || params.size() == 0) {

            throw new RuntimeException("params is null!!!");

        }

        // 创建Request

        FormBody.Builder builder = new FormBody.Builder();

        for (Map.Entry<String, String> entry : params.entrySet()) {

            builder.add(entry.getKey(), entry.getValue());

        }

        FormBody formBody = builder.build();

        Request request = new Request.Builder()

                .url(url)

                .post(formBody)

                .build();

        client.newCall(request).enqueue(callback);

    }

}



自定义的MyInterceptor类

public class MyInterceptor implements Interceptor {

    @Override

    public Response intercept(Chain chain) throws IOException {

        //获取原始的Request请求

//        Request orginRequest = chain.request();

//        FormBody body = (FormBody) orginRequest.body();

//      String name = body.name(0);

//        Request.Builder builder = orginRequest.newBuilder();

//        FormBody formBody = new FormBody.Builder().add("source", "android").build();

//        Request request = builder.post(formBody).build();

//        return chain.proceed(request);

        Request original = chain.request();

        FormBody formBody = (FormBody) original.body();

        String name = formBody.name(0);

        String value = formBody.value(0);

        FormBody formBody2 = new FormBody.Builder()

                .add(name, value)

                .add("source", "android").build();

        //请求定制:添加请求头

        Request request = original.newBuilder()

                .url(original.url())

                .post(formBody2).build();

        return chain.proceed(request);

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐