2014-06-16 2 views
1

ICS 이상을 대상으로하는 앱이 있는데 HttpsURLConnection과 HttpResponseCache를 사용하여 웹 서비스 응답을 캐싱하려고합니다. 그것은 etag로 요청을하고 수정하지 않으면 서버는 304를 리턴합니다. 캐시에서 물건을 반환하는 것처럼 보입니다. 그러나 응답이 캐시에서 온다는 표시가 없습니다. connection.getResponseCode()에서 얻는 응답 코드는 304가 아니라 200입니다. 캐시 된 것인지 알고 싶습니다. 코드가 변경되었는지 알기 원하기 때문에 읽은 상태로 표시 할 수 있습니다 (상당히 긴 문자열이므로 마음에 들지 않습니다. 두 가지를 비교해야한다.) 내가 설정할 수 있거나 확인할 수있는 무언가가 있습니까? 그래서 그것이 신선하게 가져온 것이 아니라 캐시에서 나온 것입니다.Android HttpsURLConnection, 응답이 캐시되었는지 확인하는 방법은 무엇입니까?

답변

2

응답 헤더 정보를 사용해 볼 수 있습니다. 같은 요청에 대해 동일한 날짜를 얻는다면 날짜를 비교하면 캐시가됩니다. 당신이 전체 헤더를 인쇄하려면

HttpURLConnection conn; 
conn = (HttpURLConnection)url.openConnection(); 
... 
conn.connect(); 

System.out.println(conn.getHeaderField("Date")); 

:

Map headerfields = conn.getHeaderFields(); 
Set headers = headerfields.entrySet(); 
for(Iterator i = headers.iterator(); i.hasNext();){ 
    Map.Entry map = (Map.Entry)i.next(); 
    System.out.println(map.getKey() + " : " + map.getValue() + ""); 
} 
+1

또한 conn.getDate() 또는 conn.getHeaderFieldDate 사용할 수 있습니다 ("날짜", 0). – ranquild

관련 문제