пример кода сравнения etag - PullRequest
2 голосов
/ 02 ноября 2011

Я пытаюсь смоделировать такой процесс, как «проверка кэша» в моем приложении.Я буду загружать новую версию моего веб-приложения на устройстве (на базе Android), но я хочу только загрузить новую версию файлов, основанную на сравнении etag.Кто-нибудь пример того, как использовать механизм Etag в Android?

Ответы [ 4 ]

1 голос
/ 10 января 2013

Вы можете получить доступ к полю ETag из объекта HttpURLConnection, например, так:

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

Конечно, вам необходимо убедиться, что сервер, с которым вы тестируете это, поддерживает ETags.

0 голосов
/ 22 декабря 2016

Вы можете сослаться на конкретный инструмент ShallowEtagHeaderFilter , выполняющий генерацию и проверку etag в Spring.

0 голосов
/ 23 октября 2013
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();
        }
0 голосов
/ 14 декабря 2012

Может быть, класс " HttpRequest " из этой библиотеки ( kevinsawicki ) вам поможет.

Например:

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();
...