【发布时间】:2021-05-13 22:25:02
【问题描述】:
我已经通过这个答案OkHttp doesn't redirect POST requests when used with retrofit 来重定向一个帖子请求,更具体地说,当我收到 307 个回复时。我创建了一个名为 RedirectURL 的拦截器来重定向请求,但它不起作用。
private static Interceptor redirectRequest() {
return new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
Response response = chain.proceed(chain.request());
if (response.code() == 307) {
Log.d(TAG, "intercept: is true"+response.code());
request = request.newBuilder()
.url(response.header("Location"))
.build();
response = chain.proceed(request);
}
return response;
}
};
}
OkkHttp
private OkHttpClient okHttpClient() {
RepositoryService repositoryService = new RepositoryService(context);
return new OkHttpClient.Builder()
// .cache(cache())
.followRedirects(true)
.followSslRedirects(true)
.connectTimeout(5, TimeUnit.MINUTES) // re-request if package is drop or TimeOut reach 60 seconds
.readTimeout(5, TimeUnit.MINUTES)
.writeTimeout(5, TimeUnit.MINUTES)
.addInterceptor(httpsLoggingInterceptor()) // used if network off OR on
.addInterceptor(redirectRequest())
.addNetworkInterceptor(repositoryService.networkInterceptor())
.build();
}
【问题讨论】:
标签: java retrofit okhttp interceptor