2012-04-06 13 views
0

Netty拡張1.1.9からNetty 3.3.1でHttpPostRequestDecoderを使用しようとしています。しかし、組み込みのNetty HttpRequestからorg.jboss.netty.handler.codec.http2パッケージで使用されるものに到達しようとすると、クラスキャストの問題が発生します。Netty 3.xでHttpPostRequestDecoderを使用する

この問題を解決する正しい方法は何ですか。

org.jboss.netty.handler.codec.http.DefaultHttpRequest request; 
HttpPostRequestDecoder decoder = new HttpPostRequestDecoder((org.jboss.netty.handler.codec.http.HttpRequest) request); 

答えて

1

私はネッティー拡張を使用されることはありませんが、あなたはそれだけに同梱されているHTTPコーデックのものを使用してくださいする必要がありますようにソースで簡単に見からそれが見えます。あなたの説明から、nettyに付属のhttpコーデックのものとnettyの拡張子が付いたものを混ぜてみるようです。

+0

はい、これがそうであった..私は2間の相互運用性を期待していた。..行きませんでした計画通りに私はすばやく汚れたコンバーターを作った。 – sbook

0

マスターブランチからHttpPostRequestDecoderを使用しようとしましたか?

https://github.com/netty/netty/tree/master/codec-http/src/main/java/io/netty/handler/codec/http

それは私のために働いているようです。 https://github.com/mashupbots/socko/tree/master/socko-webserver/src/main/java/org/mashupbots/socko/postdecoder

ソースディレクトリに関連するすべてのファイルを取得し、名前空間を変更するだけです。

+0

私は出血している枝に突っ込んだのですが、まだ3.x – sbook

0

私はhttp.DefaultHttpRequestとhttp2.DefaultHttpRequest実装間の小さなコンバータを書くことになった:

org.jboss.netty.handler.codec.http2.DefaultHttpRequest convertedRequest = new org.jboss.netty.handler.codec.http2.DefaultHttpRequest(HttpVersion.HTTP_1_0, org.jboss.netty.handler.codec.http2.HttpMethod.POST, request.getUri()); 
convertedRequest.setContent(request.getContent()); 
convertedRequest.setChunked(request.isChunked()); 
// convert the headers 
for (Entry<String, String> entry : request.getHeaders()) { 
    convertedRequest.setHeader(entry.getKey(), entry.getValue()); 
} 
関連する問題