Почему HTTP-заголовок 'content-length' не всегда установлен? - PullRequest
1 голос
/ 06 октября 2011

Я запрашиваю файлы с HTTP-сервера IBM через сервер приложений Websphere (7FP19). Для большинства файлов я получаю заголовок content-length, но для некоторых нет. Я обнаружил, что когда я устанавливаю последнее измененное значение в запросе на «0», тогда я получаю длину содержимого для всех файлов.

Это кажется мне немного странным. Кто-нибудь знает, почему это может быть или это просто совпадение?

Вот код:

    connection = (HttpURLConnection) url.openConnection();
    for (String value : cookies.values()) {
        connection.addRequestProperty("Cookie", value); //$NON-NLS-1$
    }
    connection.setDoOutput(true);
    connection.setRequestProperty("User-Agent", USER_AGENT); //$NON-NLS-1$
    //connection.setIfModifiedSince(localLastModified);
    connection.setIfModifiedSince(0);

    OutputStreamWriter wr = new OutputStreamWriter(connection.getOutputStream());
    wr.write(post);
    wr.flush();
    wr.close();
....
    // set file attributes
    long remoteDate = connection.getLastModified();
    if(rc == 304)
        data.lastModified = localLastModified;
    else
        data.lastModified = remoteDate;
    data.retCode = connection.getResponseCode();
    data.contentType = connection.getContentType();
    data.contentEncoding = connection.getContentEncoding();

    int expectedLength = connection.getContentLength();
    if(expectedLength < 0) {
        log.warn("Expected length: " + expectedLength);
    }

UPDATE

это работало на Wesphere FP19. Я вернулся на FP15 и проблема исчезла. Длина всегда возвращается.

1 Ответ

0 голосов
/ 08 октября 2011

Вы только что вернули HTTP_NOT_MODIFIED / 304 без тела и заголовка C-L? Кажется, это работает как ожидалось.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...