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.

Foi útil?

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).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top