今天,我在OkHttp中遇到了一个例外。
由以下原因引起:java.lang.IllegalStateException:预期的Android API级别为21+,但是为19
我知道Okhttp不再支持<21版本的设备。
从github page of Okhttp起,也从github issues起,来自okhttp版本3.13-
OkHttp可在Android 5.0+(API级别21+)和Java 8+上运行。
这是一个非常重大的变化,因为我所有的项目都在minSdkVersion = 16
上运行。或至少19。
我不希望仅使用Okhttp删除对约10%设备的支持(如果我将minSdkVersion
增加到21+)。我使用Okhttp向所有Retrofit请求添加通用标头。
是否有一种无需使用Okhttp即可添加通用标头的方法?
答案 0 :(得分:0)
您可以使用Interceptor来添加所需的所有标头:
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();