我需要使用Netty创建一个服务器应用程序,它将接收“GETs”或“POSTs”等请求。在GET请求的情况下,参数将作为查询参数。
我一直在检查HttpRequestDecoder是否适合GET请求,而HttpPostRequestDecoder适用于帖子。但我怎么能同时处理这两个?
对Netty不太熟悉,所以我会提供一些帮助:)
答案 0 :(得分:2)
netty规定我们将请求作为管道处理,您可以将管道定义为一系列处理程序。
一个序列可能是这样的:
p.addLast ("codec", new HttpServerCodec ());
p.addLast ("handler", new YourHandler());
其中p是ChannelPipeline接口的实例。您可以按如下方式定义YourHandler类:
public class YourHandler extends ChannelInboundHandlerAdapter
{
@Override
public void channelRead (ChannelHandlerContext channelHandlerCtxt, Object msg)
throws Exception
{
// Handle requests as switch cases. GET, POST,...
// This post helps you to understanding switch case usage on strings:
// http://stackoverflow.com/questions/338206/switch-statement-with-strings-in-java
if (msg instanceof FullHttpRequest)
{
FullHttpRequest fullHttpRequest = (FullHttpRequest) msg;
switch (fullHttpRequest.getMethod ().toString ())
{
case "GET":
case "POST":
...
}
}
}
}
答案 1 :(得分:0)
您想首先检查请求类型并打开值(GET / POST / PUT / DELETE等...)
http://docs.jboss.org/netty/3.1/api/org/jboss/netty/handler/codec/http/HttpMethod.html