2016-08-10 1 views
2

Я использую Retrofit 2.1.0 для анализа API в моем приложении для Android. Мне нужно время, затраченное на модернизацию, для анализа API.Как получить запрос API/время отклика с помощью Retrofit 2

Как получить время запроса/ответа с помощью Дооснащение 2.

Ниже дооснащения Rest Client Зов Я использую для API синтаксического анализа.

public static class ServiceGenerated { 
    static OkHttpClient httpClient = new OkHttpClient.Builder() 
      .connectTimeout(60, TimeUnit.SECONDS) 
      .readTimeout(60, TimeUnit.SECONDS) 
      .writeTimeout(60, TimeUnit.SECONDS) 
      .addInterceptor(new Interceptor() { 
       @Override 
       public Response intercept(Chain chain) throws IOException { 
        Request.Builder ongoing = chain.request().newBuilder(); 
        return chain.proceed(ongoing.build()); 
       } 
      }) 
      .build(); 


    private static Retrofit.Builder builder = 
      new Retrofit.Builder() 
        .baseUrl(RetrofitUtils.API_BASE_URL) 
        .client(httpClient) 
        .addConverterFactory(GsonConverterFactory.create()); 


    public static <S> S createService(Class<S> serviceClass) { 
     Retrofit retrofit = builder.client(httpClient).build(); 
     return retrofit.create(serviceClass); 
    } 

} 
+0

сделать и хотите, чтобы войти запрос/время отклика? – darwin

+0

вам может понадобиться использовать перехватчик. который точно показан вашей потребностью здесь https://github.com/square/okhttp/wiki/Interceptors –

+0

@darwin Да Мне нужен журнал для запроса или времени ответа. –

ответ

1

Попробуйте

if (BuildConfig.DEBUG) { 
     HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor(); 
     httpLoggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY); 
     httpClient.addInterceptor(httpLoggingInterceptor); 
    } 

добавить

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

для модуля приложения Gradle файла

Образец ответа:

Date: Fri, 12 Aug 2016 07:33:23 GMT 
OkHttp-Sent-Millis: 1470987074283 
OkHttp-Received-Millis: 1470987074422 
+0

Спасибо за предоставленное решение. Но все же он не предоставляет никакого журнала тайм-аута. Как распечатать журналы, используя OkHttp. –

+0

у вас будет время регистрации в консоли, как указано выше – darwin

+0

ли вы используете HttpLoggingInterceptor.Level.BODY как уровень журнала? – darwin

4

Вы можете рассчитать общее время прохождения в оба конца, вычитая отметку времени при получении ответа и отметку времени при отправке запроса. Эти два метода объекта Response даст вам эти два значения

  1. Response.sentRequestAtMillis()
  2. Response.receivedResponseAtMillis()

    RequestBody body = RequestBody.create(JSON, json); 
        Request request = new Request.Builder() 
          .url(url) 
          .post(body) 
          .build(); 
        Response response = client.newCall(request).execute(); 
        long tx = response.sentRequestAtMillis(); 
        long rx = response.receivedResponseAtMillis(); 
        System.out.println("response time : "+(rx - tx)+" ms"); 
    
Смежные вопросы