我正在使用 Jetty 来测试我们拥有的网络服务,并且我试图让它在内容类型标题下没有字符集的情况下做出响应。
有谁知道如何做到这一点?
我尝试拦截响应并将 CharacterEncoding 设置为 null 或“”,但这会产生异常。
我正在使用码头 6.1.6。
我正在使用 Jetty 来测试我们拥有的网络服务,并且我试图让它在内容类型标题下没有字符集的情况下做出响应。
有谁知道如何做到这一点?
我尝试拦截响应并将 CharacterEncoding 设置为 null 或“”,但这会产生异常。
我正在使用码头 6.1.6。
我认为这与您使用哪个 servlet 容器无关,而是您如何处理 servlet 中的响应。如果您通过使用参数调用 ServletResponse 的 setContentType (2.3) 或 setCharacterEncoding (2.4, 2.5) 来设置字符编码,null
或者""
它应该可以工作(我自己没试过)。但一定要在调用getWriter之前调用上面提到的方法,否则设置编码无效!
我现在自己试过了,但我必须承认,我的码头是一个非常古老的码头(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());
结果如下:
小服务程序代码:
response.setContentType("");
response.getWriter().write("Return");
=>
tomcat: ;charset=ISO-8859-1
码头:
小服务程序代码:
response.setContentType("text/plain");
response.getWriter().write("Return");
=>
tomcat: text/plain;charset=ISO-8859-1
jetty: text/plain
小服务程序代码:
response.setContentType("text/plain;charset=UTF-8");
response.getWriter().write("Return");
=>
tomcat: text/plain;charset=UTF-8
码头: text/plain;charset=UTF-8
所以看起来旧的码头做的正是你想要的,而 tomcat 做的是你从新码头得到的。
字符集是非常有用的信息。与其试图强迫一个好的产品(Jetty)做错事,我更愿意教服务的消费者做正确的事(识别和尊重字符集)。