0

我正在尝试将 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);
4

3 回答 3

1

我从未使用过 netty 扩展,但从快速查看源代码来看,您需要确保只使用它附带的 http 编解码器。从您的描述来看,您似乎尝试将 netty 附带的 http 编解码器内容与 netty 扩展程序附带的内容混合在一起。

于 2012-04-08T17:50:14.993 回答
0

您是否尝试过使用 master 分支中的 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

您只需将所有相关文件放入源目录并更改名称空间。

于 2012-04-09T05:12:56.327 回答
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());
}
于 2012-04-10T15:47:06.060 回答