Java 是否可以检索完整的标题或标题大小?
java servlet是否可以提取响应头的请求头的全文,而不是单独执行getHeader()方法?或者,是否可以获取这些标头的完整大小(以字节为单位) 我问这个问题的原因是因为我想跟踪servlet和发送请求的设备之间的数据使用情况,并且由于将从不同的设备发送大量请求,我希望能够准确地表示仅头使用了多少字节Java 是否可以检索完整的标题或标题大小?,java,http,header,request,response,Java,Http,Header,Request,Response,java servlet是否可以提取响应头的请求头的全文,而不是单独执行getHeader()方法?或者,是否可以获取这些标头的完整大小(以字节为单位) 我问这个问题的原因是因为我想跟踪servlet和发送请求的设备之间的数据使用情况,并且由于将从不同的设备发送大量请求,我希望能够准确地表示仅头使用了多少字节 提前谢谢 我认为你做不到。或者至少,如果没有对servlet容器实现进行黑客攻击 也许您应该在HTTP客户机和服务器之间放置一个代理,并在那里进行测量 或者,通过整合请求和响应中的头/字段
提前谢谢 我认为你做不到。或者至少,如果没有对servlet容器实现进行黑客攻击 也许您应该在HTTP客户机和服务器之间放置一个代理,并在那里进行测量
或者,通过整合请求和响应中的头/字段的大小来获得近似值。我本以为这会让你在百分之几之内。。。大多数人会说这已经足够好了。我认为你做不到。或者至少,如果没有对servlet容器实现进行黑客攻击 也许您应该在HTTP客户机和服务器之间放置一个代理,并在那里进行测量
或者,通过整合请求和响应中的头/字段的大小来获得近似值。我本以为这会让你在百分之几之内。。。大多数人会说这已经足够好了。API没有提供一种通过单个调用获取所有头的方法-请查看Javadocs: 下面是一个示例,说明如何获取所有标题(无需繁琐的空检查) 私有多值映射getAllHeaders(HttpServletRequest){ MultiValueMap allHeaders=新的MultiValueMap(); List headerNames=Collections.List((枚举)request.getHeaderNames()); 用于(字符串头名称:头名称){ allHeaders.putAll(headerName,Collections.list((枚举)request.getHeaders(headerName)); } 返回所有标题; }
使用Java Servlet模型后,如果不重新构造它(即:迭代getAllHeaders并追加
:
),就无法获得以字节为单位的头大小,您还需要添加boiler plateget HTTP 1/1.1
等。如果您绝对需要Java解决方案,这是绝对可行的,但我觉得您应该考虑将此逻辑从java应用程序中推出并放入代理中。API没有提供一种通过单个调用获取所有头的方法-请查看Javadocs:
下面是一个示例,说明如何获取所有标题(无需繁琐的空检查)
私有多值映射getAllHeaders(HttpServletRequest){
MultiValueMap allHeaders=新的MultiValueMap();
List headerNames=Collections.List((枚举)request.getHeaderNames());
用于(字符串头名称:头名称){
allHeaders.putAll(headerName,Collections.list((枚举)request.getHeaders(headerName));
}
返回所有标题;
}
使用Java Servlet模型后,如果不重新构造它(即:迭代getAllHeaders并追加:
),就无法获得以字节为单位的头大小,您还需要添加boiler plateget HTTP 1/1.1
等。如果您绝对需要Java解决方案,这是绝对可行的,但是我觉得你应该考虑把这个逻辑从你的java应用程序中推出,放到一个代理中
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;
}