2014-10-21 5 views
2

웹 SVC 호출을 할 때마다 로그에 응답이 표시됩니다. 그러나 실제로 코드에서 해당 정보에 실제로 액세스하는 것이 어렵다는 것을 알고 있습니다. 예를 들어, 다음 로그에서 볼 수있는 서버 요청 시간 및 응답 시간을 찾는 방법은 무엇입니까? 콜백에서개장 서버 요청 및 응답 시간 Android

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 

답변

2

당신은 getHeaders() 방법을 가지고 당신에게 Headers의 무리를주는 Response 개체에 액세스 할 수 있습니다.

보시다시피, Header은 이름 - 값 쌍일 뿐이므로 처리하는 데 문제가 없을 것입니다.

+0

어떻게 동기 개조 호출에 응답을 얻을 : 여기

new RestAdapter.Builder() .setEndpoint("http://www.google.com") .setProfiler(new Profiler() { @Override public Object beforeCall() { return null; } @Override public void afterCall(RequestInformation requestInfo, long elapsedTime, int statusCode, Object beforeCallData) { Log.d("Retrofit Profiler", String.format("HTTP %d %s %s (%dms)", statusCode, requestInfo.getMethod(), requestInfo.getRelativePath(), elapsedTime)); } }) .create(MyService.class); 

는 일부 샘플 출력? – SoH

+0

@SoH, docs에 따르면 "원시 HTTP 응답에 액세스하려면 응답 유형을 사용하십시오. @GET ("/ users/list ") 응답 userList();'"객체를 얻는 데 관심이 있다면 response, [Response 객체에서 추출하는 방법] (https://github.com/square/retrofit/blob/master/retrofit/src/main/java/retrofit/RestAdapter.java#L347)을 살펴보십시오. . – Smileek

+0

감사합니다. Smileek. 귀하의 의견은 정말로 많은 도움이되었습니다. 나는 한가지 더 질문이있다. 반환 유형이있는 Retrofit의 경우 응답 유형에 지정된 사용자 정의 객체가있는 경우 응답 유형에 어떻게 액세스합니까? – SoH

3

Retrofit < 2.0에서는 RestAdapter.setProfiler()를 사용하여 요청에 대한 메트릭을 가져옵니다.

경고 - this will been removed in Retrofit 2.0은 일반화 된 인터셉터 시스템으로 대체 될 예정입니다. 예를 들어

:

D/Retrofit Profiler﹕ HTTP 200 GET /users/me (200ms)