4

我正在使用 Jetty 来测试我们拥有的网络服务,并且我试图让它在内容类型标题下没有字符集的情况下做出响应。

有谁知道如何做到这一点?

我尝试拦截响应并将 CharacterEncoding 设置为 null 或“”,但这会产生异常。

我正在使用码头 6.1.6。

4

3 回答 3

3

我认为这与您使用哪个 servlet 容器无关,而是您如何处理 servlet 中的响应。如果您通过使用参数调用 ServletResponse 的 setContentType (2.3) 或 setCharacterEncoding (2.4, 2.5) 来设置字符编码,null或者""它应该可以工作(我自己没试过)。但一定要在调用getWriter之前调用上面提到的方法,否则设置编码无效

于 2009-02-10T07:52:12.693 回答
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());

结果如下:

小服务程序代码:

    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 做的是你从新码头得到的。

于 2009-02-10T15:17:22.520 回答
0

字符集是非常有用的信息。与其试图强迫一个好的产品(Jetty)做错事,我更愿意教服务的消费者做正确的事(识别和尊重字符集)。

于 2009-02-09T23:25:57.183 回答