可以检索标题的完整标题或大小?

时间:2011-03-02 00:56:16

标签: java http header request response

java servlet是否有可能提取响应头的请求头的全文而不是单独执行getHeader()方法?或者,是否可以获得这些标题的完整大小字节数?

原因我问这是因为我想跟踪servlet和发送请求的设备之间的数据使用情况,并且由于将要从不同设备发送大量请求,我希望能够获得精确表示只有标题使用了多少字节。

提前致谢。

2 个答案:

答案 0 :(得分:1)

API没有提供通过一次调用获取所有标头的方法 - 检查Javadocs:

  

http://download.oracle.com/javaee/6/api/javax/servlet/http/HttpServletRequest.html

以下是如何获取所有标头的示例(无需繁琐的空检查)。

private MultiValueMap getAllHeaders(HttpServletRequest request) {
    MultiValueMap allHeaders = new MultiValueMap();
    List<String> headerNames = Collections.list((Enumeration<String>)request.getHeaderNames());
    for (String headerName : headerNames) {
        allHeaders.putAll(headerName, Collections.list((Enumeration<String>) request.getHeaders(headerName)));
    }

    return allHeaders;
}

使用Java Servlet模型后,如果不重新构造它就无法获得字节大小(即:迭代getAllHeaders并附加<header name>: <header value>),您还需要添加样板GET HTTP 1/1.1如果你绝对需要一个Java解决方案,那肯定是可行的,但我觉得你应该考虑将这个逻辑推出你的java应用程序并进入代理。

答案 1 :(得分:0)

我认为你不能这样做。或者至少,不是没有攻击servlet容器实现。

也许您应该在HTTP客户端和服务器之间放置代理并在那里进行测量。

或者,通过在请求和响应中集成标头/字段的大小来获得近似值。我以为这会让你在几个百分之内......大多数人都会说这已经足够了。