Я пытаюсь использовать HttpURLConnection в Java для выполнения «условного получения», но никогда не получаю код состояния 304

Вот мой код:

    final HttpURLConnection conn = (HttpURLConnection) sourceURL.openConnection();
    if (cachedPage != null) {
        if (cachedPage.eTag != null) {
            conn.setRequestProperty("If-None-Match", cachedPage.eTag);
        }
        conn.setIfModifiedSince(cachedPage.pageLastModified);
    }

    conn.connect();

    if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {

        newCachedPage.eTag = conn.getHeaderField("ETag");
        newCachedPage.pageLastModified = conn.getHeaderFieldDate("Last-Modified", 0);

    } else if (conn.getResponseCode() == HttpURLConnection.HTTP_NOT_MODIFIED) {
        // Never reaches here
    }

Кажется, я никогда не получаю код ответа HTTP_NOT_MODIFIED, даже если несколько раз попадаю на один и тот же сервер раз в быстрой последовательности - где определенно нет изменений на странице. Кроме того, conn.getHeaderField ("ETag") всегда, кажется, отвечает null, а иногда conn.getHeaderFieldDate ("Last-Modified", 0) возвращает 0. Я пробовал это на различных веб-серверах.

Может ли кто-нибудь скажите, что я делаю не так?

5
задан sanity 17 August 2011 в 17:40
поделиться