OkHttp3 Interceptor 拦截器的使用 统一追加参数

来源:互联网 发布:淘宝网抓绒布料 编辑:程序博客网 时间:2024/06/04 20:14

日志拦截器

  • 添加依赖
 compile 'com.squareup.okhttp3:logging-interceptor:3.3.0'
  • 设置
HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor();            httpLoggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);            builder.addInterceptor(httpLoggingInterceptor);

Get请求统一追加参数

public class AppendUrlParamInterceptor implements Interceptor {    @Override    public Response intercept(Chain chain) throws IOException {        Request request = chain.request();        //拿到有信息的buidler        HttpUrl.Builder builder = request.url().newBuilder();        //得到新的Url(已经追加好了参数)        HttpUrl newUrl = builder                .addQueryParameter("token", "iamtoken")                .build();        //利用新的Url 构建新的Request ,并发送给服务器        Request newRequest = request.newBuilder()                .url(newUrl)                .build();        return chain.proceed(newRequest);    }}

Header统一追加参数

public class AppendHeaderParamInterceptor implements Interceptor {    @Override    public Response intercept(Chain chain) throws IOException {        Request request = chain.request();        //核心也是通过newBuilder 拿到Builder        Headers.Builder builder = request.                headers().                newBuilder();        //统一追加header参数        Headers newHeader = builder                .add("header1", "iam header1")                .build();        Request newRequest = request.newBuilder()                .headers(newHeader)                .build();        return chain.proceed(newRequest);    }}

Post请求body统一追加参数

public class AppenBodyParamsInterceptor implements Interceptor {    @Override    public Response intercept(Chain chain) throws IOException {        Request request = chain.request();        //构建新Body        RequestBody newBody = RequestBody.create(MediaType.parse("application/x-www-form-urlencoded")                , "token=iamtoken");        Request newRequest = request.newBuilder()                .post(newBody)                .build();        return chain.proceed(newRequest);    }}
原创粉丝点击