Jetty Response sem Charset
-
22-08-2019 - |
Pergunta
Eu estou usando Jetty para testar um webservice que temos e estou a tentar obtê-lo para responder sem charset sob o cabeçalho do tipo de conteúdo.
Alguém sabe como fazer isso?
Eu tentei interceptar a resposta e definindo o characterEncoding para nulo ou "", mas que dá Exceções.
Eu estou usando Jetty 6.1.6.
Solução
Eu tentei a minha auto agora, mas devo admitir, meu cais é muito antigo (4.2., Mas faz tudo do jeito que eu precisar dele). I comparado a tomcat (4.1.29, velho demais). Eu verifiquei o tipo de conteúdo com o seguinte código:
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());
E o resultado foi o seguinte:
código de Servlet:
response.setContentType("");
response.getWriter().write("Return");
=>
tomcat:; charset = ISO-8859-1
pontão:
código de Servlet:
response.setContentType("text/plain");
response.getWriter().write("Return");
=>
tomcat: text / plain; charset = ISO-8859-1
pontão: text / plain
código de Servlet:
response.setContentType("text/plain;charset=UTF-8");
response.getWriter().write("Return");
=>
tomcat: text / plain; charset = UTF-8
pontão: text / plain; charset = UTF-8
Assim, parece que o molhe mais velho faz exatamente o que você quer, enquanto tomcat faz o que você tem de mais novo cais.
Outras dicas
Eu acho que essa não é uma questão de qual servlet container que você usa, mas o que você faz com a resposta dentro de seu servlet. Se você definir a sua codificação de caracteres chamando setContentType de ServletResponse (2.3) ou setCharacterEncoding (2.4, 2.5) com o parâmetro null
ou ""
ele deve funcionar (não tente me). Mas não se esqueça de chamar os métodos citados acima antes chamando getWriter, caso contrário, definindo a codificação não terá nenhum efeito !
O charset é uma informação muito útil. Em vez de tentar forçar um bom produto (o molhe) para fazer a coisa errada eu preferiria tentar ensinar o consumidor do serviço para fazer a coisa certa (reconhecer e charset honra).