广告
返回顶部
首页 > 资讯 > 精选 >Netty4之怎么实现HTTP请求、响应
  • 404
分享到

Netty4之怎么实现HTTP请求、响应

2023-07-05 21:07:43 404人浏览 泡泡鱼
摘要

本文小编为大家详细介绍“Netty4之怎么实现Http请求、响应”,内容详细,步骤清晰,细节处理妥当,希望这篇“Netty4之怎么实现HTTP请求、响应”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1.netty

本文小编为大家详细介绍“Netty4之怎么实现Http请求、响应”,内容详细,步骤清晰,细节处理妥当,希望这篇“Netty4之怎么实现HTTP请求、响应”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

1.netty中HTTP请求和响应类

请求(FullHttpRequest)

public interface FullHttpRequest extends HttpRequest, FullHttpMessage {

可以看到,它结合了HttpRequest、FullHttpMessag,作为一个完整的HTTP请求体。

默认实现为DefaultFullHttpRequest

响应(FullHttpResponse)

public interface FullHttpResponse extends HttpResponse, FullHttpMessage {

同样,它结合了HttpResponse、FullHttpMessage

默认实现为DefaultFullHttpResponse

*

2.Netty中客户端、服务端的编解码器

作为服务端而言:

主要工作就是接收客户端请求,将客户端的请求内容解码;发送响应给客户端,并将发送内容编码

所以,服务端需要两个编解码器

* HttpRequestDecoder(将请求内容解码)

* HttpResponseEncoder(将响应内容编码)

作为客户端而言:

主要工作就是发送请求给服务端,并将发送内容编码;接收服务端响应,并将接收内容解码;

所以,客户端需要两个编解码器

* HttpResponseDecoder(将响应内容解码)

* HttpRequestEncoder(将请求内容编码)

3.Server端编写Handler类处理客户请求

创建Handler,命名为HttpHandler,具体内容如下:

import com.alibaba.fastJSON.jsONObject;import io.netty.buffer.ByteBuf;import io.netty.buffer.Unpooled;import io.netty.channel.ChannelFutureListener;import io.netty.channel.ChannelHandlerContext;import io.netty.channel.ChannelInboundHandlerAdapter;import io.netty.handler.codec.http.DefaultFullHttpResponse;import io.netty.handler.codec.http.FullHttpRequest;import io.netty.handler.codec.http.FullHttpResponse;import io.netty.handler.codec.http.HttpHeaderNames;import io.netty.handler.codec.http.HttpHeaders;import io.netty.handler.codec.http.HttpMethod;import io.netty.handler.codec.http.HttpResponseStatus;import io.netty.handler.codec.http.HttpVersion;import io.netty.util.CharsetUtil;import lombok.Data;public class HttpHandler extends ChannelInboundHandlerAdapter {@Overridepublic void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {if(msg instanceof FullHttpRequest){FullHttpRequest req = (FullHttpRequest)msg;try {// 1.获取URIString uri = req.uri();// 2.获取请求体ByteBuf buf = req.content();String content = buf.toString(CharsetUtil.UTF_8);// 3.获取请求方法HttpMethod method = req.method();// 4.获取请求头HttpHeaders headers = req.headers();// 5.根据method,确定不同的逻辑if(method.equals(HttpMethod.GET)){// TODO }if(method.equals(HttpMethod.POST)){// 接收用户输入,并将输入返回给用户Content c = new Content();c.setUri(uri);c.setContent(content);response(ctx, c);}if(method.equals(HttpMethod.PUT)){// TODO }if(method.equals(HttpMethod.DELETE)){// TODO }} finally {req.release();}}}private void response(ChannelHandlerContext ctx, Content c) {// 1.设置响应FullHttpResponse resp = new DefaultFullHttpResponse(HttpVersion.HTTP_1_1,HttpResponseStatus.OK, Unpooled.copiedBuffer(JSONObject.toJSONString(c), CharsetUtil.UTF_8));resp.headers().set(HttpHeaderNames.CONTENT_TYPE, "text/html; charset=UTF-8");// 2.发送// 注意必须在使用完之后,close channelctx.writeAndFlush(resp).addListener(ChannelFutureListener.CLOSE);}}@Dataclass Content{String uri;String content;}

注意:

在处理过程中,把msg转换为FullHttpRequest,可以获取关于请求的所有内容;

在发送响应时必须要监听CLOSE

*

4.测试

启动Server类使用客户端发送请求

在这里,笔者不单独编写Netty客户端代码,直接使用PostMan来充当客户端发送请求,具体如下:

Netty4之怎么实现HTTP请求、响应

发送一个post请求,并填写body,点击send,可以看到响应如下所示:

Netty4之怎么实现HTTP请求、响应

读到这里,这篇“Netty4之怎么实现HTTP请求、响应”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网精选频道。

--结束END--

本文标题: Netty4之怎么实现HTTP请求、响应

本文链接: https://www.lsjlt.com/news/355377.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Netty4之怎么实现HTTP请求、响应
    本文小编为大家详细介绍“Netty4之怎么实现HTTP请求、响应”,内容详细,步骤清晰,细节处理妥当,希望这篇“Netty4之怎么实现HTTP请求、响应”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1.Netty...
    99+
    2023-07-05
  • Netty4之如何实现HTTP请求、响应
    目录前言1.Netty中HTTP请求和响应类2.Netty中客户端、服务端的编解码器3.Server端编写Handler类处理客户请求4.测试总结前言 我们所编写的项目多以BS为主,...
    99+
    2023-05-14
    Netty4 HTTP请求 Netty4 HTTP响应
  • Golang实现HTTP编程请求和响应
    请求: HTTP 请求报文由请求行、请求头部、空行、请求包体4个部分组成,如下图所示: 请求行: 请求行由方法字段、URL 字段 和HTTP 协议版本字段 3个部分组成,他们之间使...
    99+
    2022-11-11
  • DRF之请求与响应的实现
    目录1 请求和响应1.1 请求1.2 响应2 视图2.1 基于APIView写接口2.2 基于GenericAPIView写的接口2.3 基于GenericAPIView和5个视图扩...
    99+
    2022-11-12
  • C# winform请求http怎么实现
    本篇内容主要讲解“C# winform请求http怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C# winform请求http怎么实现”吧!一:.Net中有两个类 ...
    99+
    2023-07-02
  • C#爬虫基础之HttpClient获取HTTP请求与响应
    一、概述 Net4.5以上的提供基本类,用于发送 HTTP 请求和接收来自通过 URI 确认的资源的 HTTP 响应。 HttpClient是一个高级 API,用于包装其运行的每个平...
    99+
    2022-11-13
  • .NET 6开发TodoList应用之实现DELETE请求与HTTP请求幂等性
    目录需求目标原理与思路实现验证总结需求 先说明一下关于原本想要去更新的PATCH请求的文章,从目前试验的情况来看,如果是按照.NET 6的项目结构(即只使用一个Program.cs完...
    99+
    2022-11-12
  • Python Http发送请求怎么实现
    本篇内容介绍了“Python Http发送请求怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!浅析requests在不借助其...
    99+
    2023-07-02
  • HTTP请求报文和响应报文是什么
    这篇文章主要介绍了HTTP请求报文和响应报文是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇HTTP请求报文和响应报文是什么文章都会有所收获,下面我们一起来看看吧。HTTP报文是面向文本的,报文中的每一个字...
    99+
    2023-06-27
  • nodejs中怎么实现一个http请求
    nodejs中怎么实现一个http请求,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。nodejs http请求相关总结通过no...
    99+
    2022-10-19
  • Qt怎么实现HTTP的Get/Post请求
    本文小编为大家详细介绍“Qt怎么实现HTTP的Get/Post请求”,内容详细,步骤清晰,细节处理妥当,希望这篇“Qt怎么实现HTTP的Get/Post请求”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。借助Qt的...
    99+
    2023-06-30
  • Spring MVC能响应HTTP请求的原因是什么
    Spring MVC能响应HTTP请求的原因是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。很多Java面试官喜欢问这个问题:一个Spring MVC的项目文件里,开发人员...
    99+
    2023-06-02
  • Node.js中怎么实现http请求客户端
    这期内容当中小编将会给大家带来有关Node.js中怎么实现http请求客户端,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Node.JS有一个request模块,可以很方...
    99+
    2022-10-19
  • Filter怎么利用http请求实现绕过
    Filter怎么利用http请求实现绕过?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。http请求绕过Filter的实例场景:两个web服务器,A当做服务端,B...
    99+
    2023-05-31
    http filter
  • Android HTTP发送请求和接收响应的实例代码
    添加权限 首先要在manifest中加上访问网络的权限: 代码如下: <manifest ... > <uses-permission android:na...
    99+
    2022-06-06
    HTTP Android
  • Java使用HttpUtils怎么实现发送HTTP请求
    本篇文章和大家了解一下Java使用HttpUtils怎么实现发送HTTP请求。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。目录第一部分:简单总结HTTP请求常用配置第二部分:使用JavaLib的HttpUtils第三部分...
    99+
    2023-07-06
  • Spring框架中如何实现HTTP请求到Git仓库的快速响应?
    Spring框架是一个非常流行的Java应用程序开发框架,它提供了许多功能和特性,使得开发人员可以快速、高效地构建Java应用程序。在本文中,我们将探讨如何在Spring框架中实现HTTP请求到Git仓库的快速响应。 Git是一个流行的版本...
    99+
    2023-07-24
    http git spring
  • nodejs发送http请求时遇到404长时间未响应怎么办
    这篇文章给大家分享的是有关nodejs发送http请求时遇到404长时间未响应怎么办的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。通常,我们在使用nodejs发送http请求时,...
    99+
    2022-10-19
  • 如何实现SpringCloud Gateway请求响应日志
    这篇文章主要讲解了“如何实现SpringCloud Gateway请求响应日志”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何实现SpringCloud ...
    99+
    2022-10-18
  • 怎么用VBS实现发送带Cookie的HTTP请求
    这篇文章主要介绍怎么用VBS实现发送带Cookie的HTTP请求,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!为了方便测试,先写一个回显Cookie的简单的PHP程序: 代码如下:<php foreach($_...
    99+
    2023-06-08
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作