okhttp 设置redirect
时间: 2023-11-10 20:48:45 浏览: 46
在 OkHttp 中,可以通过设置 `followRedirects` 属性来控制重定向的行为。默认情况下,`followRedirects` 属性被设置为 `true`,表示当遇到重定向时会自动跟随。
如果你想禁止重定向,可以将其设置为 `false`:
```java
OkHttpClient client = new OkHttpClient.Builder()
.followRedirects(false)
.build();
```
如果你想自定义重定向的行为,可以使用 `followRedirects` 方法和 `RedirectInterceptor` 拦截器。
`followRedirects` 方法接受一个布尔值参数,表示是否自动跟随重定向:
```java
Request request = new Request.Builder()
.url("http://example.com")
.followRedirects(false)
.build();
```
`RedirectInterceptor` 拦截器可以在重定向发生时进行处理,例如获取重定向后的响应:
```java
class RedirectInterceptor implements Interceptor {
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
Response response = chain.proceed(request);
if (response.isRedirect()) {
Request newRequest = request.newBuilder()
.url(response.header("Location"))
.build();
response = chain.proceed(newRequest);
}
return response;
}
}
OkHttpClient client = new OkHttpClient.Builder()
.addInterceptor(new RedirectInterceptor())
.build();
Request request = new Request.Builder()
.url("http://example.com")
.build();
Response response = client.newCall(request).execute();
```