문제

나는 우리가 가진 웹 서비스를 테스트하기 위해 Jetty를 사용하고 있으며 컨텐츠 유형 헤더 아래에서 숯으로 응답하도록하려고합니다.

누구 든지이 작업을 수행하는 방법을 아는 사람이 있습니까?

응답을 가로 채고 캐릭터 코딩을 NULL 또는 "" "로 설정하려고 시도했지만 예외가됩니다.

나는 Jetty 6.1.6을 사용하고 있습니다.

도움이 되었습니까?

해결책

나는 지금 그것을 내 자신을 시도했지만 인정해야한다. 나의 부두는 아주 오래된 것이지만 (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");

=>
Tomcat :; charset = ISO-8859-1
둑:

서블릿 코드 :

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

=>
Tomcat : text/plain; charset = iso-8859-1
부두 : 텍스트/평원

서블릿 코드 :

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

=>
Tomcat : 텍스트/일반; charset = utf-8
부두 : 텍스트/일반; charset = utf-8

따라서 오래된 부두가 원하는 것을 정확하게하는 것처럼 보이지만 Tomcat은 새로운 부두에서 얻은 일을합니다.

다른 팁

나는 이것이 당신이 사용하는 어떤 서블릿 컨테이너가 아니라, 당신이 당신의 서플렛 내부의 응답으로하는 일이라고 생각합니다. ServletResponse의 SetContentType (2.3) 또는 매개 변수와 함께 SetCharacterEncoding (2.4, 2.5)을 호출하여 캐릭터 인코딩을 설정하는 경우 null 또는 "" 작동해야합니다 (스스로 시도하지 않았습니다). 그러나 위에 이름이 지정된 방법을 호출하십시오 ~ 전에 GetWriter에게 전화를 걸고 그렇지 않으면 인코딩을 설정합니다 효과가 없을 것입니다!

숯불은 매우 유용한 정보입니다. 좋은 제품 (Jetty)을 잘못한 일을하도록 강요하는 대신, 나는 서비스 소비자에게 올바른 일을하도록 가르치려고 노력하고 싶습니다 (Charset을 인정하고 존중합니다).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top