netty 服务端 如何解析报文_Netty核心13-HttpResponseEncoder

本篇我们来讲解HttpResponseEncoder如何将响应体FullHttpResponse转化成ByteBuf。

先来看下Http响应报文

34c532d2732eaa04424166d5a395a0aa.png

HttpResponseEncoder就是按照这样的格式将数据解析成http响应报文。

HttpResponseEncoder核心方法

protected void encode(ChannelHandlerContext ctx, Object msg, List out) throws Exception {  ByteBuf buf = null;  if (msg instanceof HttpMessage) {    if (state != ST_INIT) {      throw new IllegalStateException("unexpected message type: " + StringUtil.simpleClassName(msg)                                      + ", state: " + state);    }    @SuppressWarnings({ "unchecked", "CastConflictsWithInstanceof" })    H m = (H) msg;    buf = ctx.alloc().buffer((int) headersEncodedSizeAccumulator);    // Encode the message.    encodeInitialLine(buf, m);    state = isContentAlwaysEmpty(m) ? ST_CONTENT_ALWAYS_EMPTY :    HttpUtil.isTransferEncodingChunked(m) ? ST_CONTENT_CHUNK : ST_CONTENT_NON_CHUNK;    sanitizeHeadersBeforeEncode(m, state == ST_CONTENT_ALWAYS_EMPTY);    encodeHeaders(m.headers(), buf);    ByteBufUtil.writeShortBE(buf, CRLF_SHORT);   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值