android - 在没有 OkHttp 的情况下改造公共(public) header ?

标签 android retrofit retrofit2 okhttp

问题:

今天我在 OkHttp 遇到了异常。

Caused by: java.lang.IllegalStateException: Expected Android API level 21+ but was 19

我了解到 Okhttp 不再支持 <21 版本的设备。

来自 github page of Okhttp以及 github issues , 来自 okhttp 版本 3.13 -

OkHttp works on Android 5.0+ (API level 21+) and on Java 8+.

这是一个非常重大的变化,因为我所有的项目都在 minSdkVersion = 16 上运行。或者至少 19。

我尝试了什么?

  • 有一种方法可以在每个请求中单独添加 header ,如 Retrofit official page 中所述。 , 但这需要在每个请求中手动添加 header 。
  • 我不想使用旧版本的 Okhttp。因为它可能会导致我在较新的 okhttp 版本中修复的意外问题。 (或者我应该使用旧的?)

我需要什么:

我不想删除对 ~10% 设备的支持(如果我将 minSdkVersion 增加到 21+)只是为了使用 Okhttp。我使用 Okhttp 为 Retrofit 的所有请求添加一个通用 header 。

有没有办法不使用 Okhttp 添加通用 header ?

最佳答案

你使用拦截器来添加你想要的所有标题:

OkHttpClient.Builder builder = new OkHttpClient.Builder();

        builder.addInterceptor(new Interceptor() {
            Request request;

            @Override
            public Response intercept(@NonNull Chain chain) throws IOException {

                request = chain.request().newBuilder().addHeader("Authorization", "Bearer " + GlobalClass.accessToken)
                        .addHeader("Accept", "application/json").build();

                return chain.proceed(request);
            }
        }).addNetworkInterceptor(httpLoggingInterceptor);

并用这个返回生成器

 return builder.connectTimeout(15, TimeUnit.SECONDS)
                .writeTimeout(25, TimeUnit.SECONDS)
                .readTimeout(15, TimeUnit.SECONDS).build();

关于android - 在没有 OkHttp 的情况下改造公共(public) header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55258307/

相关文章:

Android:如何修复与我的文字重叠的图像?

java - 使用 Java 7 避免嵌套数据中出现 null 的更好方法

android - 如何使用 MVP 和 rxjava 构建我的应用程序并进行改造以从 Observables 中获取数据?

android - 在改造 2 的 onResponse 中访问发送的参数

android - 改造中的调用或响应?

未触发 Android 地理围栏 API BroadcastReceiver

java - fragment 中的字节数组参数为空

Android:Kotlin - Retrofit2 - Moshi |使用复杂的 json

java - Android RecyclerView 内的relativelayout 无法正确滚动

Android - Retrofit : java. security.cert.CertPathValidatorException:找不到证书路径的信任 anchor