2009-02-09 6 views
4

저는 Jetty를 사용하여 우리가 보유하고있는 webservice를 테스트하고 있는데, content-type 헤더 아래에서 아무런 문자 세트도 사용하지 않고 응답하려고합니다.Charset이없는 Jetty 응답

누구든지이 작업을 수행하는 방법을 알고 있습니까?

나는 Response를 가로 채고 CharacterEncoding을 null 또는 ""로 설정하려고했지만 예외가 발생했습니다.

나는 부두 6.1.6을 사용하고있다.

답변

1

나는 지금 내 자신을 시험해 보았으나 내 부두는 아주 오래된 것 (4.2., 그러나 내가 원하는대로 모든 것을한다)을 인정해야한다. 나는 바람둥이 (4.1.29, old)와 비교했다. 나는 다음과 같은 코드를 사용하여 콘텐츠 형식 검사 :

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"); 

=>
톰캣 : text/plain; charset = UTF-8
부두 : 텍스트/일반; charset = UTF-8

그래서 오래된 부두가 정확히 원하는대로 작동하는 것처럼 보이지만, 바람둥이가 새로운 부두에서 얻은 것을 수행합니다.

+0

실제로 나에게 뭔가를 시도해 봐야 할 것입니다. 에 대한 아이디어 감사 +1 –

0

이 문자셋은 매우 유용한 정보입니다. 좋은 제품 (Jetty)이 잘못된 일을하도록 강요하는 대신, 서비스의 소비자에게 올바른 것을 수행하도록 가르치려고합니다 (charset을 인식하고 존경하십시오).

+1

불행히도 소비자가 Microsoft :( –

2

이 서블릿 컨테이너를 사용하는 것이 아니라 서블릿 내부의 응답으로 처리한다고 생각합니다. ServletResponse의 setContentType (2.3) 또는 setCharacterEncoding (2.4, 2.5)를 매개 변수 null 또는 ""으로 호출하여 문자 인코딩을 설정하면 작동하지 않을 것입니다 (직접 시도하지 않았습니다). 그러나 의 메소드를 호출하기 전에 getWriter를 호출해야합니다. 그렇지 않으면 인코딩을 will have no effect으로 설정하십시오!

+0

Unfortunatley 인 경우 CharacterEncoding이 작동하지 않습니다. null 인 경우 iso-8859-1이 기본적으로 사용되며 contentType이 일반 텍스트/xml iso로 설정된 경우 -8859-1은 기본값으로도 사용됩니다. : –

+0

죄송 합니다만 : 나 자신을 시도하지 않았습니까? setCharacterEncoding ("")은 무엇입니까? –