我可以强制jetty *不*包含Content-Length标头进行单元测试吗?

时间:2013-02-07 10:54:48

标签: java http junit jetty embedded-jetty

我在一些JUnit测试中使用了一个简单的嵌入式Jetty实例。

我想强制Jetty返回一个没有Content-Length标头的HTTP响应(正如我们在某些请求中看到的那样)。

我目前实施handle(...) AbstractHandler作为捕获请求的主要方式,然后,根据URL中的参数,Jetty会返回各种可能的响应,无论是好还是其他。

response.setHeader("Content-Length", null);无法正常工作,但仍会根据我的正文数据返回有效内容长度。

2 个答案:

答案 0 :(得分:2)

创建一个javax.servlet.Filter,其HttpServletResponse包含您的实施,阻止Content-Length标头设置。

请务必在HttpServletResponseWrapper中实现以下方法。

每一个都可以是一段类似于...的简单代码。

@Override
public void addHeader(String name, String val)
{
    if ( "Content-Length".equalsIgnoreCase(name) ) 
    {
        // Ignore content-length from servlets
        return;
    }
    super.addHeader(name,val);
}

答案 1 :(得分:1)

如果你给响应写了一些字节或字符,然后刷新,然后写一些其他字节或字符到te响应,它将不得不使用分块传输类型,并且将无法设置内容长度,因为它被迫发送字节而不知道实际写入的长度。