2009-02-09 4 views
4

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

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

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

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

ответ

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
Причал:

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

 response.setContentType("text/plain"); 
    response.getWriter().write("Return"); 

=>
кот: текст/равнинный, кодировка = ISO-8859-1
молы: текст/обычный

Servlet код:

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

=>
кот: text/plain; charset = UTF-8
Причал: текст/равнина; кодировка = UTF-8

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

+0

Мне действительно нужно попробовать что-то, что вы мне дали идея для. Спасибо +1 –

0

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

+1

Unfortunatley потребитель - Microsoft :( –

2

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

+0

Unfortunatley, установка CharacterEncoding не работает так, если оно равно null, тогда iso-8859-1 используется по умолчанию. И если для contentType установлен простой старый текст/xml iso -8859-1 используется как по умолчанию. :( –

+0

Извините, как я уже сказал: «Не пытайтесь». Как насчет setCharacterEncoding («»)? –

Смежные вопросы