Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在android中获取HTTP请求/响应时间_Android_Okhttp - Fatal编程技术网

如何在android中获取HTTP请求/响应时间

如何在android中获取HTTP请求/响应时间,android,okhttp,Android,Okhttp,我需要记录以下内容: DNS时间 连接时间 SSL时间 设备网络带宽 第一字节时间 转移时间 对象数/字节数 我正在使用OKHttp库进行网络请求。正如您提到的,您正在使用OKHttp库进行HTTP调用,OKHttp库提供了一种工具,可以使用日志侦听器依赖项打印您需要的每个API调用的日志 您可以在下面的链接中了解更多详细信息,并按照下面链接的步骤操作。 正如您所提到的,您正在使用OKHttp库进行HTTP调用,OKHttp库提供了一种工具,可以打印您使用日志侦听器依赖项所需的每个API调用的日

我需要记录以下内容:

DNS时间 连接时间 SSL时间 设备网络带宽 第一字节时间 转移时间 对象数/字节数
我正在使用OKHttp库进行网络请求。

正如您提到的,您正在使用OKHttp库进行HTTP调用,OKHttp库提供了一种工具,可以使用日志侦听器依赖项打印您需要的每个API调用的日志

您可以在下面的链接中了解更多详细信息,并按照下面链接的步骤操作。

正如您所提到的,您正在使用OKHttp库进行HTTP调用,OKHttp库提供了一种工具,可以打印您使用日志侦听器依赖项所需的每个API调用的日志

您可以在下面的链接中了解更多详细信息,并按照下面链接的步骤操作。

添加HttpLoggingInterceptor。它记录总请求时间。它还将记录Ok Http发送和Ok Http接收头

public static Retrofit getInstance() {
if (instance == null) {
    HttpLoggingInterceptor logging = new HttpLoggingInterceptor();          
    logging.setLevel(HttpLoggingInterceptor.Level.BODY);
    OkHttpClient.Builder httpClient = new OkHttpClient.Builder();           
    httpClient.addInterceptor(logging);  // <-- this is the important line!
    instance = new Retrofit.Builder().baseUrl(Constant.BASE_URL)
                .addConverterFactory(GsonConverterFactory.create())
                .client(httpClient.build())
                .build();
}
return instance;
}

添加HttpLoggingInterceptor。它记录总请求时间。它还将记录Ok Http发送和Ok Http接收头

public static Retrofit getInstance() {
if (instance == null) {
    HttpLoggingInterceptor logging = new HttpLoggingInterceptor();          
    logging.setLevel(HttpLoggingInterceptor.Level.BODY);
    OkHttpClient.Builder httpClient = new OkHttpClient.Builder();           
    httpClient.addInterceptor(logging);  // <-- this is the important line!
    instance = new Retrofit.Builder().baseUrl(Constant.BASE_URL)
                .addConverterFactory(GsonConverterFactory.create())
                .client(httpClient.build())
                .build();
}
return instance;
}

看看OkHttp的新EventListener:

它提供了一种将侦听器连接到hcian的每个步骤的方法,因此您可以获得如下信息:

class PrintingEventListener extends EventListener {
  private long callStartNanos;

  private void printEvent(String name) {
    long nowNanos = System.nanoTime();
    if (name.equals("callStart")) {
      callStartNanos = nowNanos;
    }
    long elapsedNanos = nowNanos - callStartNanos;
    System.out.printf("%.3f %s%n", elapsedNanos / 1000000000d, name);
  }

  @Override public void callStart(Call call) {
    printEvent("callStart");
  }

  @Override public void callEnd(Call call) {
    printEvent("callEnd");
  }

  @Override public void dnsStart(Call call, String domainName) {
    printEvent("dnsStart");
  }

  @Override public void dnsEnd(Call call, String domainName, List<InetAddress> inetAddressList) {
    printEvent("dnsEnd");
  }

  ...
}
将输出以下内容:

REQUEST 1 (new connection)
0.000 callStart
0.010 dnsStart
0.017 dnsEnd
0.025 connectStart
0.117 secureConnectStart
0.586 secureConnectEnd
0.586 connectEnd
0.587 connectionAcquired
0.588 requestHeadersStart
0.590 requestHeadersEnd
0.591 responseHeadersStart
0.675 responseHeadersEnd
0.676 responseBodyStart
0.679 responseBodyEnd
0.679 connectionReleased
0.680 callEnd

看看OkHttp的新EventListener:

它提供了一种将侦听器连接到hcian的每个步骤的方法,因此您可以获得如下信息:

class PrintingEventListener extends EventListener {
  private long callStartNanos;

  private void printEvent(String name) {
    long nowNanos = System.nanoTime();
    if (name.equals("callStart")) {
      callStartNanos = nowNanos;
    }
    long elapsedNanos = nowNanos - callStartNanos;
    System.out.printf("%.3f %s%n", elapsedNanos / 1000000000d, name);
  }

  @Override public void callStart(Call call) {
    printEvent("callStart");
  }

  @Override public void callEnd(Call call) {
    printEvent("callEnd");
  }

  @Override public void dnsStart(Call call, String domainName) {
    printEvent("dnsStart");
  }

  @Override public void dnsEnd(Call call, String domainName, List<InetAddress> inetAddressList) {
    printEvent("dnsEnd");
  }

  ...
}
将输出以下内容:

REQUEST 1 (new connection)
0.000 callStart
0.010 dnsStart
0.017 dnsEnd
0.025 connectStart
0.117 secureConnectStart
0.586 secureConnectEnd
0.586 connectEnd
0.587 connectionAcquired
0.588 requestHeadersStart
0.590 requestHeadersEnd
0.591 responseHeadersStart
0.675 responseHeadersEnd
0.676 responseBodyStart
0.679 responseBodyEnd
0.679 connectionReleased
0.680 callEnd
看看,看看