Ответ Jetty без кодировки
-
22-08-2019 - |
Вопрос
Я использую Jetty для тестирования веб-сервиса, который у нас есть, и я пытаюсь заставить его отвечать без кодировки в заголовке content-type.
Кто-нибудь знает, как это сделать?
Я пытался перехватить Ответ и установить для characterEncoding значение null или "", но это приводит к исключениям.
Я использую Jetty 6.1.6.
Решение
Сейчас я попробовал это сам, но должен признать, что мой jetty очень старый (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");
=>
кот:;кодировка=ISO-8859-1
причал:
Код сервлета:
response.setContentType("text/plain");
response.getWriter().write("Return");
=>
кот:текст /обычный; кодировка=ISO-8859-1
причал:текстовый / обычный
Код сервлета:
response.setContentType("text/plain;charset=UTF-8");
response.getWriter().write("Return");
=>
кот:текст / обычный; кодировка=UTF-8
причал:текст / обычный; кодировка=UTF-8
Таким образом, похоже, что более старый jetty делает именно то, что вы хотите, в то время как tomcat делает то, что вы получили от более нового jetty.
Другие советы
Я думаю, что дело не в том, какой контейнер сервлета вы используете, а в том, что вы делаете с ответом внутри вашего сервлета.Если вы задаете свою кодировку символов, вызывая setContentType ServletResponse (2.3) или setCharacterEncoding (2.4, 2.5) с параметром null
или ""
это должно сработать (сам не пробовал).Но обязательно вызовите методы, названные выше до того , как вызов getWriter, в противном случае установка кодировки не будет иметь никакого эффекта!
Кодировка - это очень полезная информация.Вместо того чтобы пытаться заставить хороший продукт (Jetty) поступать неправильно, я бы предпочел попытаться научить потребителя услуги поступать правильно (распознавать и соблюдать кодировку).