如何封装Interceptor
时间: 2024-04-27 14:22:05 浏览: 11
要封装一个Interceptor,你需要实现OkHttp提供的Interceptor接口,并在其中实现拦截逻辑。下面是一个简单的示例:
```java
public class AuthInterceptor implements Interceptor {
private final String authToken;
public AuthInterceptor(String authToken) {
this.authToken = authToken;
}
@Override
public Response intercept(Chain chain) throws IOException {
Request original = chain.request();
// 添加认证信息到请求头
Request.Builder builder = original.newBuilder()
.header("Authorization", "Bearer " + authToken);
Request request = builder.build();
return chain.proceed(request);
}
}
```
在上述示例中,我们实现了一个AuthInterceptor,它的作用是在请求头中添加Authorization参数,其值为传入的authToken。在intercept方法中,我们首先获取到原始的请求,然后创建一个新的请求构建器,并在其中添加认证信息。最后,我们使用构建器创建一个新的请求,并使用它来调用Chain的proceed方法,以继续请求的处理流程。
使用这个Interceptor非常简单,只需要在创建OkHttpClient时将其添加到拦截器列表中即可。示例代码如下:
```java
OkHttpClient client = new OkHttpClient.Builder()
.addInterceptor(new AuthInterceptor("your_token"))
.build();
Request request = new Request.Builder()
.url("http://www.example.com")
.build();
Response response = client.newCall(request).execute();
```
在上述示例中,我们创建了一个新的OkHttpClient,并在其中添加了AuthInterceptor。这样,在每个请求前,OkHttpClient都会自动调用AuthInterceptor中的intercept方法来添加认证信息到请求头中。