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

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

2017-05-20 23:55 344 查看

日志拦截器

添加依赖

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);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐