美文网首页
Retrofit的使用(二)

Retrofit的使用(二)

作者: YC1995 | 来源:发表于2019-11-16 20:15 被阅读0次

    前言

    前面介绍了怎么使用retrofit的使用,接下去简单介绍一下项目中经常用到的,为网络层添加一个拦截器。拦截器的作用可以对每一个网络请求添加一些通用的query参数或者添加header。这样做的好处是可以减少重复的劳动,不用每个接口都定义query参数。

    定义拦截器

    • 添加query参数
    public class RequestIntercept implements Interceptor {
        @Override
        public Response intercept(Chain chain) throws IOException {
            Request request = chain.request();
            HttpUrl httpUrl = request.url().newBuilder()
                    .addQueryParameter("a", "yc")
                    .build();
            request = request.newBuilder().url(httpUrl).build();
            return chain.proceed(request);
        }
    }
    

    定义一个拦截器实现Interceptor接口并且实现intercept方法。
    首先是通过传入的Chain对象获取Request实例进而获取HttpUrl对象。通过Builder对象调用addQueryParameter方法添加query参数。

    • 添加header
    public class RequestIntercept implements Interceptor {
    
        @Override
        public Response intercept(@NonNull Chain chain) throws IOException {
            Request request = chain.request().newBuilder()
                    .addHeader("token", "yc")
                    .build();
            return chain.proceed(request);
        }   
    }
    

    配置Retrofit

    • 创建Client实例添加拦截器
    OkHttpClient httpClient = new OkHttpClient.Builder()
                    .addInterceptor(new RequestIntercept())
                    .build();
    
    • 为Retrofit配置Client
    Retrofit retrofit = new Retrofit.Builder()
                    .baseUrl("http://api.apiopen.top")
                    .addConverterFactory(GsonConverterFactory.create())
                    .client(httpClient)
                    .build();
    

    相关文章

      网友评论

          本文标题:Retrofit的使用(二)

          本文链接:https://www.haomeiwen.com/subject/rhayictx.html