前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用java实现HTTP的GET请求

使用java实现HTTP的GET请求

作者头像
望月从良
发布2020-05-22 15:02:17
1.5K0
发布2020-05-22 15:02:17
举报
文章被收录于专栏:Coding迪斯尼Coding迪斯尼

在前几节我们详细讲解了http协议的相关信息,基于“知行合一”的原则,只有通过具体动手实践才有可能检验知识点被我们真正掌握,本节我们就使用代码实现http的get请求。

首先需要一个http服务器,基于简单原则,我使用了在手机上的福昕pdf阅读器iPhone版,安卓版效用一样,它自身附带了小型http服务器,用于将文档从电脑传给手机,打开该App,在菜单中选择Wi-Fi,点击“允许文件传输”即可启动http服务器,然后在浏览器中输入“http://192.168.2.127:8888",其中192.168.2.127是我手机的ip,也对应http服务器的ip,8888是服务器接收请求的端口,输入URL点击后,浏览器会接收到请求回应并展现如下:

使用它的好处在于足够简单,并且它有文件上传功能,于是后面我们还可以用来实现POST请求,接下来我们使用代码模拟客户端向它发送GET请求,首先实现的是http数据包组装和解析功能:

上面给定的类用于负责组装http请求的方法行,同时将http请求的头部字段和对应信息放入到一个Map中以便对应起来,然后通过get_http_content方法将请求行以及头部字段信息组合成http请求数据包的内容。该类还实现了简单的http返回数据解析,它解读服务器返回的http数据,确保返回码是200,也就是服务器正常处理了我们发出的http请求,同时通过Content-Length字段获取服务器返回的数据长度。

接着我们使用该类发送请求数据包:

该类使用HttpEncoder类构造http请求数据包后,调用前面实现的tcp协议将数据包封装起来发送给服务器,一旦收到服务器的返回后解析返回数据内容,获取http返回码,确认返回码为200也就是服务器正常处理发过去的请求,然后获得服务器返回的数据长度。

接下来就在函数recv_notify中依次接收服务器发送过来的数据信息,每次接收信息后计算总共接收到的数据长度是否与服务器返回的Content-Length字段中指定的长度一致,如果一致说明信息全部接收完毕,那么程序将接收到的信息打印出来并关闭tcp连接,上面代码运行后在wireshark中的抓包如下:

从截图中看到,GET / HTTP/1.1就是程序构造的请求包,HTTP/1.1 200 OK就是服务器返回的应答,从回复看服务器接受了程序发出的请求并正常处理,同时将相关信息返回给程序,程序在接收完所有信息后将接收到的数据打印出来,结果如下:

从截图看到,程序正确接收到服务器返回的html页面信息,由此可见我们代码的实现逻辑基本正确。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-05-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Coding迪斯尼 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档