我正在尝试使用Netty Extension 1.1.9中的HttpPostRequestDecoder和Netty 3.3.1。但是,当我试图从内置的Netty HttpRequest到org.jboss.netty.handler.codec.http2包中使用的内容时,我遇到了类转换问题。
解决这个问题的正确方法是什么?
org.jboss.netty.handler.codec.http.DefaultHttpRequest request;
HttpPostRequestDecoder decoder = new HttpPostRequestDecoder((org.jboss.netty.handler.codec.http.HttpRequest) request);
答案 0 :(得分:1)
我从未使用netty扩展,但从快速查看源代码看起来你需要确保只使用随附的http编解码器。从您的描述中看起来您似乎尝试混合netty附带的http编解码器和netty扩展附带的那些。
答案 1 :(得分:0)
您是否尝试过使用主分支中的HttpPostRequestDecoder?
https://github.com/netty/netty/tree/master/codec-http/src/main/java/io/netty/handler/codec/http
您只需将所有相关文件放入源目录并更改命名空间即可。
答案 2 :(得分: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());
}