java - 如何在 Retrofit2 中正确处理重定向作为响应

标签 java android retrofit2

我正在使用的 API 在使用 POST 请求成功创建资源时会返回 308?我如何使用 Retrofit2 最好地处理这个问题?

或者 API 不应该返回 308?

最佳答案

如下所示创建 Interceptor ,然后调用 addInterceptor(getRedirectInterceptor()) (在 OkHttpClient.Builder 实例上)

protected Interceptor getRedirectInterceptor() {
    return new Interceptor() {
        @Override
        public okhttp3.Response intercept(Chain chain) throws IOException {
            Request request = chain.request();
            okhttp3.Response response = chain.proceed(request);
            if (response.code() == 308) {
                request = request.newBuilder()
                        .url(response.header("Location"))
                        .build();

                response = chain.proceed(request);
            }

            return response;
        }
    };
}

关于java - 如何在 Retrofit2 中正确处理重定向作为响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50438655/

相关文章:

java - 将 Java 属性文件转换为 JSON 字符串

java - 空 `Optional` 类型的返回值应该是什么?

java - 在Java中追加字符串并添加 "..."

android - 如何为 Android 使用 libx265 编译 FFmpeg?

android - RxJava 2/Retrofit 2 - NetworkOnMainThreadException

java - 运行 map 缩减程序时出现错误 java.lang.RuntimeException : java. lang.ClassNotFoundException : wordcount_classes. WordCount$Map

android - 如何使用 HTML url 加载新窗口?在安卓系统中

android - 在运行时更改改造 okhttp 客户端

android - Mockito - 缺少方法调用异常

java - 如何测试一个方法是否被调用?