Ответ Причала без Чарсета - PullRequest
4 голосов
/ 09 февраля 2009

Я использую Jetty для тестирования имеющегося у нас веб-сервиса и пытаюсь заставить его отвечать без набора символов в заголовке типа контента.

Кто-нибудь знает, как это сделать?

Я пытался перехватить Ответ и установить для CharacterEncoding значение null или "", но это дает исключения.

Я использую Jetty 6.1.6.

Ответы [ 3 ]

3 голосов
/ 10 февраля 2009

Я думаю, что дело не в том, какой контейнер сервлета вы используете, а в том, что вы делаете с ответом внутри вашего сервлета. Если вы устанавливаете кодировку символов, вызывая setContentType (2.3) или setCharacterEncoding (2.4, 2.5) в ServletResponse с параметром null или "", это должно сработать (я сам не пробовал). Но обязательно вызовите методы, названные выше перед вызовом getWriter, иначе установка кодировки не будет иметь эффекта !

1 голос
/ 10 февраля 2009

Я попробовал это сам, но должен признать, что мой причал очень старый (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; кодировка = ISO-8859-1
причал: текст / обычный

Код сервлета:

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

=>
tomcat: text / plain; кодировка = UTF-8
причал: текст / обычный; кодировка = UTF-8

Похоже, что старый причал делает именно то, что вы хотите, а кот делает то, что вы получили с нового причала.

0 голосов
/ 10 февраля 2009

В кодировке очень полезная информация. Вместо того, чтобы пытаться заставить хороший продукт (Jetty) делать что-то не то, я бы лучше попытался научить потребителя услуги поступать правильно (распознавать и соблюдать кодировку).

...