Khe*_*raj 6 android retrofit okhttp retrofit2 okhttp3
今天我在 OkHttp 中遇到了一个异常。
引起:java.lang.IllegalStateException:预期的 Android API 级别为 21+,但为 19
我知道 Okhttp 不再支持 <21 版本的设备。
从Okhttp的GitHub的页面和还对github上的问题,从okhttp 3.13版本-
OkHttp 适用于 Android 5.0+(API 级别 21+)和 Java 8+。
这是一个非常重大的变化,因为我所有的项目都在minSdkVersion = 16. 或者至少 19 个。
我不想minSdkVersion只为使用 Okhttp删除对 ~10% 设备的支持(如果我增加到21+)。我使用 Okhttp 为 Retrofit 的所有请求添加一个通用标头。
有没有办法在不使用 Okhttp 的情况下添加通用标头?
您可以使用拦截器添加您想要的所有标头,如下所示:
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);
Run Code Online (Sandbox Code Playgroud)
并用这个返回构建器
return builder.connectTimeout(15, TimeUnit.SECONDS)
.writeTimeout(25, TimeUnit.SECONDS)
.readTimeout(15, TimeUnit.SECONDS).build();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1820 次 |
| 最近记录: |