改造:缓存控制从不包含在响应中

时间:2014-06-28 13:44:10

标签: android rest retrofit

无论我做什么,我都无法在响应中看到标题缓存控制

设置

  • 改装1.6.0
  • okHttp 1.6.0
  • okHttp-urlConnection 1.6.0
  • gson 2.2.4
  • Android 4.0 +

1。构造

1.1使用我的OkHttpClient RestAdapter

OkHttpClient okHttpClient = new OkHttpClient();
Cache cache = new Cache(getCacheDir(), 1024);
okHttpClient.setCache(cache);

RestAdapter restAdapter = new RestAdapter.Builder()
            .setEndpoint(URL)
            .setClient(new OkClient(okHttpClient))
            .setLogLevel(LogLevel.HEADERS)
            .build();

1.2 RestAdapter使用默认的OkHttpClient 在这里,调试时我可以看到客户端有 cache = null;

RestAdapter restAdapter = new RestAdapter.Builder()
            .setEndpoint(URL)
            .setLogLevel(LogLevel.HEADERS)
            .build();

2日志

对于这两种配置,日志都是相同的。

2.1请求

  

06-28 13:24:05.601:D / Retrofit(1581):---> HTTP GET myUri

     

06-28 13:24:05.601:D / Retrofit(1581):Cache-Control:public,   最大年龄= 640000

     

06-28 13:24:05.601:D / Retrofit(1581):---> END HTTP(无正文)

2.2回复

  

06-28 13:24:05.701:D / Retrofit(1581):< --- HTTP 200 myUri(102ms)

     

06-28 13:24:05.701:D / Retrofit(1581):: HTTP / 1.1 200 OK

     

06-28 13:24:05.701:D / Retrofit(1581):连接:保持活力

     

06-28 13:24:05.701:D / Retrofit(1581):Content-Type:text / html

     

06-28 13:24:05.701:D / Retrofit(1581):日期:星期六,2014年6月28日13:24:01   GMT

     

06-28 13:24:05.701:D / Retrofit(1581):OkHttp-Received-Millis:   1403961845708

     

06-28 13:24:05.701:D / Retrofit(1581):OkHttp-Response-Source:NETWORK   200

     

06-28 13:24:05.701:D / Retrofit(1581):OkHttp-Sent-Millis:   1403961845680

     

06-28 13:24:05.701:D / Retrofit(1581):服务器:nginx / 1.6.0

     

06-28 13:24:05.701:D / Retrofit(1581):转移编码:分块

     

06-28 13:24:05.701:D / Retrofit(1581):变化:接受编码

     

06-28 13:24:05.701:D / Retrofit(1581):X-Powered-By:   PHP / 5.5.12-1〜dotdeb.1

     

06-28 13:24:05.701:D / Retrofit(1581):< --- END HTTP(-1-byte body)

编辑03/07/2014

我注意到在这个问题Retrofit+OkHttp is ok when sending GET requests but gives SocketTimetout when sending POST中,提问者得到了“缓存控制”作为回应。

  

04-11 18:00:41.291:D / Retrofit(16390):---> HTTP GET网址

     

04-11 18:00:41.291:D / Retrofit(16390):---> END HTTP(0字节正文)

     

04-11 18:00:42.008:D / Retrofit(16390):< --- HTTP 200 url(716ms)

     

04-11 18:00:42.015:D / Retrofit(16390):: HTTP / 1.1 200 OK

     

04-11 18:00:42.015:D / Retrofit(16390):缓存控制:max-age = 0,私有,必须重新验证

虽然不能在仿真器和真实设备中解决这个问题......

1 个答案:

答案 0 :(得分:0)

我很蠢,我们没有在我们的后端正确设置缓存!