我正在使用Jetty测试我们拥有的Web服务,并且我试图让它在内容类型标题下没有字符集进行响应。
有谁知道怎么做?
我尝试拦截响应并将CharacterEncoding设置为null或“”,但这会产生异常。
我正在使用Jetty 6.1.6。
答案 0 :(得分:3)
我认为这不是你使用哪个servlet容器的问题,而是你在servlet中对响应做了什么。如果通过使用参数null
或""
调用ServletResponse的setContentType(2.3)或setCharacterEncoding(2.4,2.5)来设置字符编码,它应该可以工作(没有尝试自己)。但是一定要在调用getWriter之前调用上面的方法,否则设置编码will have no effect!
答案 1 :(得分:1)
我现在尝试了自己,但是我必须承认,我的码头是一个非常古老的码头(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 :; charset = ISO-8859-1
码头:
Servlet代码:
response.setContentType("text/plain");
response.getWriter().write("Return");
=>
tomcat:text / plain; charset = ISO-8859-1
jetty:text / plain
Servlet代码:
response.setContentType("text/plain;charset=UTF-8");
response.getWriter().write("Return");
=>
tomcat:text / plain; charset = UTF-8
jetty:text / plain; charset = UTF-8
所以看起来旧的码头完全符合你的要求,而tomcat则是从新码头做的。
答案 2 :(得分:0)
charset是非常有用的信息。 而不是试图强迫一个好的产品(Jetty)做错事我宁愿尝试教服消费者做正确的事情(识别并尊重charset)。