我已经使用Retrofit 2,okhttp和okhttp:logging-interceptor创建了项目。
private static APIInterface apiInterface;
private static RestClient restClient;
private static HttpLoggingInterceptor interceptor;
OkHttpClient okHttpClient = new OkHttpClient();
okHttpClient.setConnectTimeout(30, TimeUnit.SECONDS);
okHttpClient.setReadTimeout(30, TimeUnit.SECONDS);
okHttpClient.interceptors().add(new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Request original = chain.request();
Request.Builder requestBuilder = original.newBuilder()
.header("Accept", "application/json")
.header("X-Parse-Application-Id", Constants.PARSE_APP_ID)
.header("X-Parse-REST-API-Key", Constants.PARSE_REST_API)
.method(original.method(), original.body());
Request request = requestBuilder.build();
return chain.proceed(request);
}
});
interceptor = new HttpLoggingInterceptor(); // got crash here
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
okHttpClient.interceptors().add(interceptor);
这是我的追踪:
java.lang.VerifyError: com/squareup/okhttp/logging/HttpLoggingInterceptor
at com.rocker.rest.RestClient.setupRestClient(RestClient.java:62)
at com.rocker.rest.RestClient.<clinit>(RestClient.java:39)
at com.rocker.fragment.HistoryFragment.onCreateView(HistoryFragment.java:38)
我没有使用平方的okio!
答案 0 :(得分:5)
你读过这个吗? https://futurestud.io/blog/retrofit-2-log-requests-and-responses
Retrofit 2完全依赖OkHttp进行任何网络操作。 由于OkHttp是Retrofit 2的对等依赖项,因此您无需添加 Retrofit 2作为稳定版发布后的附加依赖项 释放。
OkHttp 2.6.0附带一个日志拦截器作为内部 依赖关系,您可以直接将它用于您的Retrofit客户端。 Retrofit 2.0.0-beta2仍然使用OkHttp 2.5.0。未来版本将 将依赖性提升到更高的OkHttp版本。这就是你需要的原因 手动导入日志拦截器。添加以下行 您的build.gradle文件中的gradle导入以获取日志记录 拦截器依赖。
compile&#39; com.squareup.okhttp:logging-interceptor:2.6.0&#39;