Не получаются логи запросов и ответов на Retrofit в Android Studio - PullRequest
0 голосов
/ 18 марта 2019

Я не получаю логи запросов и ответов на запросы в андроид студии. Я даже использую HttpLogginInterceptor в Retrofit2. Но я не могу видеть журналы тела запроса и тела ответа в Logcat.

Вот мой модифицированный клиент:

import java.util.concurrent.TimeUnit;

import okhttp3.OkHttpClient;
import okhttp3.logging.HttpLoggingInterceptor;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;


public class RestClient {


    private static RestClient restClient;
    private Retrofit retrofitAuth;
    private Retrofit retrofit;

    /**
     * only to be used for auth
     */


    public static WebServices webServices() {
        return getRestClient().getRetrofitInstance().create(WebServices.class);
    }

    public static WebServices webAuthServices() {
        return getRestClient().getAuthRetrofitInstance().create(WebServices.class);
    }

    private static RestClient getRestClient() {
        if (restClient == null) {
            restClient = new RestClient();
        }
        return restClient;
    }

    private Retrofit getRetrofitInstance() {
        if (retrofit == null) {
            retrofit = new Retrofit.Builder()
                    .baseUrl(BuildConfig.API_URL)
                    .addConverterFactory(GsonConverterFactory.create())
                    .client(getOkHttpClient())
                    .build();
        }
        return retrofit;
    }

    private Retrofit getAuthRetrofitInstance() {
        if (retrofitAuth == null) {
            retrofitAuth = new Retrofit.Builder()
                    .baseUrl(BuildConfig.API_URL)
                    .client(getAuthOkHttpClient())
                    .addConverterFactory(GsonConverterFactory.create())
                    .build();
        }
        return retrofitAuth;
    }

    private OkHttpClient getOkHttpClient() {
        return new OkHttpClient.Builder()
                .readTimeout(60, TimeUnit.SECONDS)
                .connectTimeout(60, TimeUnit.SECONDS)
                .addInterceptor(new ConnectivityInterceptor())
                .addInterceptor(new HeaderAdder())
                .addInterceptor(new AuthInterceptor())
                .addInterceptor(getHttpLoggingInterceptor())
                .build();
    }

    private OkHttpClient getAuthOkHttpClient() {
        return new OkHttpClient.Builder()
                .readTimeout(60, TimeUnit.SECONDS)
                .connectTimeout(60, TimeUnit.SECONDS)
                .addInterceptor(new HeaderAdder())
                .addInterceptor(new ConnectivityInterceptor())
                .addInterceptor(getHttpLoggingInterceptor())
                .build();
    }

    private HttpLoggingInterceptor getHttpLoggingInterceptor() {
        HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
        logging.setLevel(HttpLoggingInterceptor.Level.BODY);
        return logging;
    }

    public static void destroyRestClient() {
        restClient = null;
    }


}

Как вы можете видеть вторую последнюю функцию, которая возвращает HttpLoggingInterceptor, и я передаю его моему клиенту okhttp, а затем этот клиент добавляется в модифицированный экземпляр. Но я все еще не могу видеть логи. Пожалуйста, помогите.

1 Ответ

0 голосов
/ 18 марта 2019

Пожалуйста, добавьте этот Lib в Gradle файл

 // Retrofit-2
    implementation 'com.squareup.okhttp3:logging-interceptor:3.9.1'





  val interceptor = HttpLoggingInterceptor()
    interceptor.level = HttpLoggingInterceptor.Level.BODY

    val client = OkHttpClient.Builder()
            .connectTimeout(30, TimeUnit.SECONDS)
            .writeTimeout(30, TimeUnit.SECONDS)
            .readTimeout(30, TimeUnit.SECONDS)
            .addInterceptor(interceptor)
            .build()
   GlobalApp.api = Retrofit.Builder()
            .baseUrl(END_URL)
            .addConverterFactory(GsonConverterFactory.create())
            .client(client)
            .build().create(Api::class.java)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...