我使用的码头测试服务,我们已经和我试图让它回应没有charset下content-type header.

没有人知道如何做到这一点?

我试图拦截的响应和设置CharacterEncoding到空或""但是,让的例外情况。

我使用的码头6.1.6.

有帮助吗?

解决方案

我试了一下我自己了,但我必须承认,我的码头是一个非常古老的一个(4.2,但做的一切,我需要它的方式)。我比较它把Tomcat(4.1.29,老了)。我用下面的代码检查内容类型:

URL tomcatUrl = new URL("http://localhost:18080/ppi/jobperform/headertest")//tomcat;
URLConnection tconnect = tomcatUrl.openConnection();
System.out.println("tomcat: " + tconnect.getContentType());


URL jettyUrl = new URL("http://localhost:13818/ppi/jobperform/headertest")//jetty;
URLConnection jconnect = jettyUrl.openConnection();
System.out.println("jetty: " + jconnect.getContentType());

和的结果如下:

的Servlet代码:

    response.setContentType("");
    response.getWriter().write("Return");

=>结果 Tomcat的:;字符集= ISO-8859-1,点击 码头:

的Servlet代码:

     response.setContentType("text/plain");
     response.getWriter().write("Return");

=>结果 Tomcat的:文本/无格式;字符集= ISO-8859-1,点击 码头:文本/无格式

的Servlet代码:

response.setContentType("text/plain;charset=UTF-8");
response.getWriter().write("Return");

=>结果 Tomcat的:文本/无格式;字符集= UTF-8,点击 码头:text / plain的;字符集= UTF-8

所以看起来好像老码头不正是你想要的东西,而Tomcat的做了你从较新的码头得到了什么。

其他提示

我认为,这不是一个问题,其servlet容器使用时,但你做什么用的响应内部servlet。如果你的字符编码,通过调用ServletResponse的setContentType(2.3)或setCharacterEncoding(2.4,2.5)与参数 null"" 它应工作(没有尝试自己).但可以肯定对话的方法上面 之前 叫getWriter,否则设置的编码 将没有任何效果!

的字符集是非常有用的信息。 而不是试图迫使好的产品(码头)做错误的事情,我宁愿尝试教服务做正确的事的消费者(可以识别和字符集)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top