为什么HTTP标题'content-length'并不总是设置?

时间:2011-10-06 10:07:48

标签: http-headers websphere

我通过Websphere App Server(7FP19)从IBM HTTP服务器请求文件。对于大多数文件,我得到内容长度标题,但对于一些文件,不是。我发现当我将请求中的最后修改值设置为“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);
    }

更新

这是在Wesphere FP19上运行的。我回到了FP15,问题就消失了。始终返回长度。

1 个答案:

答案 0 :(得分:0)

你刚刚收到HTTP_NOT_MODIFIED / 304,它没有正文,也没有C-L标题?这似乎按预期工作。