gpt4 book ai didi

android - 改造日志拦截器异常

转载 作者:IT老高 更新时间:2023-10-28 23:03:41 26 4
gpt4 key购买 nike

我正在尝试使用 Retrofit 启用日志记录,但出现此异常:

07-13 12:44:53.278 28698-29248/com.xxxx.debug E/AndroidRuntime: FATAL EXCEPTION: OkHttp Dispatcher
Process: com.xxxx.debug, PID: 28698
java.lang.NoSuchMethodError: No virtual method log(Ljava/lang/String;)V in class Lokhttp3/internal/Platform; or its super classes (declaration of 'okhttp3.internal.Platform' appears in /data/data/com.xxxx.debug/files/instant-run/dex/slice-realm-optional-api_16b022358933b490d810e358ea76b13cd4d88163-classes.dex)
at okhttp3.logging.HttpLoggingInterceptor$Logger$1.log(HttpLoggingInterceptor.java:109)
at okhttp3.logging.HttpLoggingInterceptor.intercept(HttpLoggingInterceptor.java:157)
at okhttp3.RealCall$ApplicationInterceptorChain.proceed(RealCall.java:190)
at com.xxxx.api.RetrofitClient$1.intercept(RetrofitClient.java:59)
at okhttp3.RealCall$ApplicationInterceptorChain.proceed(RealCall.java:190)
at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:163)
at okhttp3.RealCall.access$100(RealCall.java:30)
at okhttp3.RealCall$AsyncCall.execute(RealCall.java:127)
at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)

这就是我的做法:

public class RetrofitClient {

private static MyService instance;

public static MyService getInstance(Context context) {
if (instance == null) {
instance = newInstance(context);
}
return instance;
}

private static MyService newInstance(Context context) {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(context.getString(R.string.base_url))
.addConverterFactory(GsonConverterFactory.create())
.client(getClient())
.build();

return retrofit.create(MyService.class);
}

@NonNull
private static OkHttpClient getClient() {
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor()
.setLevel(HttpLoggingInterceptor.Level.BODY);

OkHttpClient.Builder httpClient = new OkHttpClient.Builder()
.addInterceptor(new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Request original = chain.request();

Request request = original.newBuilder()
.header("api-key", "...")
.header("version-app", "-")
.header("platform", "android")
.header("version", "-")
.header("device", "-")
.method(original.method(), original.body())
.build();

Response response = chain.proceed(request);// <-- CRASH

return response;
}
})
.addInterceptor(interceptor);

return httpClient.build();
}
}

我尝试只添加一个拦截器,但仍然崩溃。我正在使用这个依赖项:

compile 'com.squareup.retrofit2:retrofit:2.1.0'
compile 'com.squareup.retrofit2:converter-gson:2.1.0'
compile 'com.squareup.okhttp3:logging-interceptor:3.4.1'

我在这里做错了什么?

编辑:这很尴尬……问题自己解决了。我什么也没做,我正在修改我的所有提交,并且 RetrofitClientbuild.gradle 都没有改变。因此,该问题与 gradle 依赖项或版本无关。

幸运的是,有人会对此异常(exception)有所了解!

最佳答案

Retrofit 2.1.0 依赖于 OkHttp 3.3.0,所以我会为 Logging Interceptor(它是 OkHttp 的一部分)使用相同的版本:

compile 'com.squareup.okhttp3:logging-interceptor:3.3.0'

关于android - 改造日志拦截器异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38349756/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com