Netty HttpServerCodec和HttpObjectAggregator

GET请求

Get请求包括两个部分:

request line(包括method,request uri,protocol version))

header

HttpServerCodec是netty针对http编解码的处理类,但是这些只能处理像http get的请求,也就是数据带在url问号后面的http请求参数

POST请求

POST请求包括三个部分

request line(包括method,request uri,protocol version))

header

message body

从上可以看出,当我们用POST方式请求服务器的时候,对应的参数信息是保存在message body中的,如果只是单纯的用HttpServerCodec是无法完全的解析Http POST请求的,因为HttpServerCodec只能获取uri中参数,所以需要加上HttpObjectAggregator。

HttpObjectAggregator这个netty的处理器就是为了解决这个问题而来的.它把HttpMessage和HttpContent聚合成为一个FullHttpRquest或者FullHttpRsponse,大致结构如下图所示:

复制代码
public class ChannelHandlerInitializer extends ChannelInitializer<SocketChannel> {

	@Override
	protected void initChannel(SocketChannel ch) throws Exception {

		// HTTP编码解码器
		ch.pipeline().addLast("http-codec", new HttpServerCodec());
		// 把HTTP头、HTTP体拼成完整的HTTP请求
		ch.pipeline().addLast("aggregator", new HttpObjectAggregator(65536));
        // httpRequestHandler 中获取到的就是一个完整的Http消息了
		ch.pipeline().addLast("http-handler", httpRequestHandler);
	}

}
相关推荐
珍珠先生4 分钟前
P16 · IDEA 启动报错:找不到或无法加载主类
java
子非鱼a6 分钟前
【WEB】[RoarCTF 2019]Easy Java
java·开发语言
西峰u6 分钟前
电商项目测试报告
java·项目测试报告
lemon_sjdk16 分钟前
各种Binding(1)
java·javafx·绑定·源码解析
李少兄19 分钟前
记一次 IDEA 打开 Vue 项目后目录“闪现即消失“ 问题排查
java·vue.js·intellij-idea
Wang's Blog23 分钟前
Java框架快速入门: Spring Security+OAuth2之安全配置基础及函数式风格对比
java·安全·spring
小荷才露尖尖角,早有蜻蜓立上头23 分钟前
class java.util.LinkedHashMap cannot be cast to xxx
java·spring boot
陈皮波比茶25 分钟前
计算机二级MySQL笔记
java·数据库
木井巳28 分钟前
【BFS/DFS 解决 FloodFill 算法】衣橱整理
java·算法·leetcode·深度优先·广度优先·宽度优先
zzzll111129 分钟前
LangChain 1.3 新特性详解与实战指南
java·数据库·langchain