okhttp3 с дооснащением 2.0.0-beta4

Я пытаюсь заставить свой сетевой класс регистрировать входящий JSON, я бы хотел использовать HttpLoggingInterceptor из OkHttp3. Проблема в том, что мой объект Retrofit не будет принимать OkHttpClient из okhttp3. Пожалуйста, дайте мне знать, если вы знаете, что я делаю неправильно.

Грейдл

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 говорит, что для модернизации требуется okhttp.OkHttpClient, а не okhttp3.OkHttpClient, но если использовать его, я не могу использовать HttpLoggingInterceptor...

Спасибо за любой ответ.


person TheJudge    schedule 18.02.2016    source источник


Ответы (3)


В качестве справки для других вам нужно скомпилировать «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'
person You Qi    schedule 21.02.2016

Да, неважно - для тех, кто сталкивается с похожими проблемами, используйте модификацию 2, а не модификацию.

(Необходимо импортировать модификацию 2. Модернизацию, а не импортировать модификацию. Модернизацию)

person TheJudge    schedule 18.02.2016
comment
Это не ответ на ваш собственный вопрос. - person Shubham A.; 18.02.2016
comment
@Shubham Да, это так. Нужно import retrofit2.Retrofit, а не import retrofit.Retrofit - person laalto; 18.02.2016
comment
Возможно, вам следует прочитать советы по форматированию на SO, как указано здесь - stackoverflow.com/help/formatting. - person Shubham A.; 18.02.2016

Я использую следующую конфигурацию для модернизации, и она работает хорошо.

Внутри 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;
}
person Faraz Ahmed    schedule 18.02.2016