okhttp3 与 Retrofit 2.0.0-beta4
okhttp3 with Retrofit 2.0.0-beta4
我正在尝试让我的网络 class 记录传入 JSON,我想使用 OkHttp3 的 HttpLoggingInterceptor。问题是我的 Retrofit 对象不会从 okhttp3 获取 OkHttpClient。如果您知道我做错了什么,请告诉我。
Gradle
compile 'com.squareup.retrofit:retrofit:2.0.0-beta4'
compile 'com.squareup.okhttp3:okhttp:3.1.2'
compile 'com.squareup.retrofit:converter-jackson:2.0.0-beta2'
compile 'com.squareup.okhttp3:logging-interceptor:3.0.1'
改造和客户端设置
import okhttp3.OkHttpClient;
import okhttp3.logging.HttpLoggingInterceptor;
import retrofit.Retrofit;
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
client = new OkHttpClient.Builder().addInterceptor(interceptor).build();
retrofit = new Retrofit.Builder().baseUrl(URL).client(client).addConverterFactory(JacksonConverterFactory.create()).build();
API = retrofit.create(com.glasshouse.glasshouse.Network.API.class);
Android studio 说 Retrofit 需要 okhttp.OkHttpClient 而不是 okhttp3.OkHttpClient 但如果使用那个,我就不能使用 HttpLoggingInterceptor ...
感谢您的回答。
是的没关系 - 对于那些面临类似问题的人,请使用 retrofit2 而不是 retrofit
(需要导入retrofit2.Retrofit而不是导入retrofit.Retrofit)
我正在使用以下配置进行改造,效果很好。
里面 build.gradle:
compile 'com.squareup.okhttp3:okhttp:3.0.1'
compile 'com.squareup.okhttp:logging-interceptor:2.6.0'
compile 'com.fasterxml.jackson.core:jackson-core:2.4.1'
compile 'com.fasterxml.jackson.core:jackson-annotations:2.4.1'
compile 'com.fasterxml.jackson.core:jackson-databind:2.4.1'
改装配置:
private WebServices getWebServices(String serverUrl) {
OkHttpClient client = new OkHttpClient();
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
client.interceptors().add(interceptor);
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(serverUrl)
.addConverterFactory(GsonConverterFactory.create())
.client(client)
.build();
webServices = retrofit.create(WebServices.class);
return webServices;
}
作为其他人的参考,您需要在 gradle 中编译 "com.squareup.retrofit2" 而不是 "com.squareup.retrofit"。
//old
compile 'com.squareup.retrofit:retrofit:2.0.0-beta4'
//new
compile 'com.squareup.retrofit2:retrofit:2.0.0-beta4'
我正在尝试让我的网络 class 记录传入 JSON,我想使用 OkHttp3 的 HttpLoggingInterceptor。问题是我的 Retrofit 对象不会从 okhttp3 获取 OkHttpClient。如果您知道我做错了什么,请告诉我。
Gradle
compile 'com.squareup.retrofit:retrofit:2.0.0-beta4'
compile 'com.squareup.okhttp3:okhttp:3.1.2'
compile 'com.squareup.retrofit:converter-jackson:2.0.0-beta2'
compile 'com.squareup.okhttp3:logging-interceptor:3.0.1'
改造和客户端设置
import okhttp3.OkHttpClient;
import okhttp3.logging.HttpLoggingInterceptor;
import retrofit.Retrofit;
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
client = new OkHttpClient.Builder().addInterceptor(interceptor).build();
retrofit = new Retrofit.Builder().baseUrl(URL).client(client).addConverterFactory(JacksonConverterFactory.create()).build();
API = retrofit.create(com.glasshouse.glasshouse.Network.API.class);
Android studio 说 Retrofit 需要 okhttp.OkHttpClient 而不是 okhttp3.OkHttpClient 但如果使用那个,我就不能使用 HttpLoggingInterceptor ...
感谢您的回答。
是的没关系 - 对于那些面临类似问题的人,请使用 retrofit2 而不是 retrofit
(需要导入retrofit2.Retrofit而不是导入retrofit.Retrofit)
我正在使用以下配置进行改造,效果很好。
里面 build.gradle:
compile 'com.squareup.okhttp3:okhttp:3.0.1'
compile 'com.squareup.okhttp:logging-interceptor:2.6.0'
compile 'com.fasterxml.jackson.core:jackson-core:2.4.1'
compile 'com.fasterxml.jackson.core:jackson-annotations:2.4.1'
compile 'com.fasterxml.jackson.core:jackson-databind:2.4.1'
改装配置:
private WebServices getWebServices(String serverUrl) {
OkHttpClient client = new OkHttpClient();
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
client.interceptors().add(interceptor);
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(serverUrl)
.addConverterFactory(GsonConverterFactory.create())
.client(client)
.build();
webServices = retrofit.create(WebServices.class);
return webServices;
}
作为其他人的参考,您需要在 gradle 中编译 "com.squareup.retrofit2" 而不是 "com.squareup.retrofit"。
//old
compile 'com.squareup.retrofit:retrofit:2.0.0-beta4'
//new
compile 'com.squareup.retrofit2:retrofit:2.0.0-beta4'