首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Retrofit 2获取API请求/响应时间

如何使用Retrofit 2获取API请求/响应时间
EN

Stack Overflow用户
提问于 2016-08-10 20:21:55
回答 3查看 12.3K关注 0票数 7

我在我的android应用程序中使用Retrofit 2.1.0进行API解析。我需要翻新所花费的时间来解析API。

如何使用Retrofit 2获取请求/响应时间。

下面是我用来进行API解析的Retrofit Rest客户端调用。

代码语言:javascript
复制
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);
    }

}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-08-12 17:11:38

尝尝这个

代码语言:javascript
复制
   if (BuildConfig.DEBUG) {
        HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor();
        httpLoggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
        httpClient.addInterceptor(httpLoggingInterceptor);
    }

还可以添加

代码语言:javascript
复制
compile 'com.squareup.okhttp3:logging-interceptor:3.2.0' 

添加到应用程序模块gradle文件中

回复示例:

代码语言:javascript
复制
Date: Fri, 12 Aug 2016 07:33:23 GMT
OkHttp-Sent-Millis: 1470987074283
OkHttp-Received-Millis: 1470987074422
票数 4
EN

Stack Overflow用户

发布于 2017-04-21 19:32:33

您可以通过接收响应的时间戳和发送请求的时间戳减去总的往返时间。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");

票数 20
EN

Stack Overflow用户

发布于 2019-01-15 15:46:08

这很容易,您可以在响应的raw()部分中找到receivedResponseAtMillis()sendResponseAtMillis(),然后您就可以计算差值

代码语言:javascript
复制
response.raw().receivedResponseAtMillis()
response.raw().sendResponseAtMillis()
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38873321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档