[置顶] Android OkHttp网络请求拦截器
2017-12-18 10:49
417 查看
封装一个请求网络工具类
自定义的MyInterceptor类
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); }
相关文章推荐
- Android——自定义拦截器实现OKHttp网络请求
- Android——自定义拦截器实现OKHttp网络请求
- Android技术选型:你该选择哪个网络请求开源库(Volley、OkHttp、Retrofit)?
- Android okHttp网络请求之缓存控制Cache-Control
- Android网络请求:OkHttp实战
- Android okHttp网络请求之Retrofit+Okhttp组合(五)
- Android okHttp网络请求之Retrofit+Okhttp组合(五)
- Retrofit 2.0使用详解,配合OkHttp、Gson,Android最强网络请求框架
- Android okHttp 实战(一):okHttp网络请求之Get/Post请求
- Android 2016最热网络请求开发框架之Okhttp ,facebook强烈推荐必备开发
- Android网络请求发展简史和RxJava+Retrofit+OkHttp实践
- Android网络请求利用第三方框架okHttp的工具类
- Android技术选型:你该选择哪个网络请求开源库(Volley、OkHttp、Retrofit)?
- Android okHttp网络请求之Retrofit+Okhttp+RxJava组合
- Android网络请求库 - Say hello to OkHttp
- Android okHttp 实战(二):okHttp网络请求之文件上传下载
- Android okHttp网络请求之Get/Post请求
- [置顶] Android开发之http网络请求返回码问题集合。
- Android okHttp网络请求之Get/Post请求
- Android网络请求框架----Okhttp3完全解析(1),使用篇