을 사용합니다. Netty를 HTTP 클라이언트로 사용하는 Twitter의 Finagle 클라이언트를 사용합니다. 우리의 Netty는 HTTP 버전을 확인하려고Netty 3.10.0.FINAL은 "잘못된 버전 형식 : <! DOCTYPE"
2017-01-13 11:28:13,825 [finagle/netty3-1] WARN com.twitter.finagle.netty3.channel.ChannelStatsHandler ChannelStatsHandler caught an exception
java.lang.IllegalArgumentException: invalid version format: <!DOCTYPE
의 Netty의 org.jboss.netty.handler.codec.http.HttpVersion
클래스의 결과로, 응답의 HTTP 버전을 확인 할 수없는 우리의 웹 서비스 호출 중 하나에 대한 참조 (HTTP/1.1, HTTP/1.0) 문자열 <!DOCTYPE
을 기반으로합니다. 그것은 분명히 작동하지 않을 것입니다. 일치가 실패하면 위의 IllegalArgumentException이 발생합니다.
이 때문에 응용 프로그램에서 응답을받지 못했습니다. Netty는 예외를 던지고 그게 전부입니다.
내 질문에 Netty가 HttpVersion 클래스의 HTTP 버전 일치에 대한 입력으로 <!DOCTYPE
을 사용할 수있는 이유는 무엇입니까?
CURL을 사용하여이 문제가 발생한 서비스를 호출 할 때 적절한 HTTP 버전으로 적절한 응답을받습니다. 다음은 뒤틀리는 HTTP 헤더입니다. 나는 또한 적절한 몸을 얻는다. 그것은 <!DOCTYPE
으로 시작하지 않는다. <SOAP-ENVELOPE..
으로 시작하는 올바른 형식의 SOAP 응답입니다.
HTTP/1.1 200 OK
Date: Fri, 13 Jan 2017 12:25:14 GMT
Server: Apache-Coyote/1.1
Content-Type: text/xml;charset=utf-8
Connection: close
Transfer-Encoding: chunked
내 생각 엔 어떤 itermediate 시스템 내가 CURL으로 트리거 할 수 없었으므로는 '깨진'응답을 반환하기 때문에 실패한 호출이 발생한다는 것입니다. 따라서 두 번째 질문은 시스템이 HTTP 버전없이 응답을 반환 할 수 있는지, 그리고 여기에서 올바른 방향으로 생각하고 있는지 여부입니다.