NettyをHTTPクライアントとして使用するTwitterのFinagleクライアントを使用しています。私たちは、ネッティーは、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
網状のorg.jboss.netty.handler.codec.http.HttpVersion
クラスで、その結果、応答のHTTPのバージョンを確認することができない私たちのWebサービス呼び出しの1を参照(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をトリガーすることができなかったことを、「壊れた」応答を返すため、失敗コールが発生するということです。ですから、私の2番目の質問は、システムがHttpバージョンなしで応答を返すことが可能で、私がここで正しい方向に考えていれば可能であるかどうかということです。