【问题标题】:etag comparision code exampleetag 比较代码示例
【发布时间】:2011-11-01 22:15:54
【问题描述】:

我正在尝试在我的应用程序中模拟“缓存验证”之类的过程。 我将在设备上下载我的 web 应用程序的新版本(基于 android),但我只想下载基于 etag 比较的文件的新版本。 有没有人举例说明如何在 Android 中使用 Etag 机制?

【问题讨论】:

    标签: android etag


    【解决方案1】:

    您可以从 HttpURLConnection 对象访问 ETag 字段,如下所示:

    HttpURLConnection conn = (HttpURLConnection)new URL(url).openConnection();
    String etag = conn.getHeaderField("ETag");
    

    当然,您需要确保您测试的服务器支持 ETag。

    【讨论】:

      【解决方案2】:

      也许这个库 (kevinsawicki) 中的“HttpRequest”类会对您有所帮助。

      例如:

      File latest = new File("/data/cache.json");
      HttpRequest request = HttpRequest.get("http://google.com");
      //Copy response to file
      request.body(latest);
      //Store eTag of response
      String eTag = request.eTag();
      
      //Later you can check if changes exist
      boolean unchanged = HttpRequest.get("http://google.com")
                                 .ifNoneMatch(eTag)
                                 .notModified();
      

      【讨论】:

        【解决方案3】:
        HttpClient httpClient = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost(url);
        try {
                    HttpResponse response = httpClient.execute(httpPost);
                    Log.d("Http Response:", response.getFirstHeader("etag").toString());
        
                } catch (ClientProtocolException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
        

        【讨论】:

          【解决方案4】:

          可以参考ShallowEtagHeaderFilter在Spring中进行etag生成和验证的具体实现。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2021-10-11
            • 2017-01-10
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多