我可以看到,每当我进行 web svc 调用时,我都会在日志中得到响应。但是我发现很难在我的代码中实际访问这些信息。例如,我如何找出我可以从以下日志中看到的服务器请求时间和响应时间。
HTTP/1.1 200 OK
Connection: keep-alive
Content-Type: application/json;charset=UTF-8
Date: Tue, 21 Oct 2014 12:35:26 GMT
OkHttp-Received-Millis: 1413894922514
OkHttp-Response-Source: NETWORK 200
OkHttp-Selected-Protocol: http/1.1
OkHttp-Sent-Millis: 1413894921354
Server: Apache-Coyote/1.1
transfer-encoding: chunked
Run Code Online (Sandbox Code Playgroud)
我正在使用的库和版本:
Retrofit 版本 : 2.1.0
okhttp 版本 : 3.3.1
logging-interceptor 版本 : 3.3.1
此方法仅适用于
onResponse().
如果您调试onResponse(),您将在部件中看到sentRequestAtMillis& receivedResponseAtMillis,rawResponse如下图所示。
这些参数分别保存发出请求和接收响应的时间(以毫秒为单位)。
以下示例说明了如何在收到响应后以编程方式获取这些参数中的值。
retrofitRequest.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody>
// time when the request was made to server, which you get from ```sentRequestAtMillis```
long requestTime = response.raw().sentRequestAtMillis();
// time when the response was received, which you get from ```receivedResponseAtMillis```
long responseTime = response.raw().receivedResponseAtMillis();
//time taken to receive the response after the request was sent
long apiTime = responseTime - requestTime;
}
@Override public void onFailure(Call<ResponseBody> call, Throwable t) {
}
});
Run Code Online (Sandbox Code Playgroud)
请注意,您可能需要处理可能发生的任何异常的代码。
| 归档时间: |
|
| 查看次数: |
3956 次 |
| 最近记录: |