【JavaWeb篇】HTTP请求构造方式

✅作者简介:大家好,我是小杨
📃个人主页:「小杨」的csdn博客

🐳希望大家多多支持🥰一起进步呀!


HTTP请求构造方式

1,通过form表单构造

form 表单是HTML中的一个常用标签,可以用于给服务器发送 GET 或者 POST 请求。

1)form表单标签的使用

image-20230526224917169

form中的重要参数:

action:构造的 HTTP 请求的 URL 是什么。

method:构造的 HTTP 请求的 方法 是 GET 还是 POST (form 只支持 GET 和 POST)。

input中的重要参数:

type:表示输入框的类型,text 表示文本,password 表示密码,submit 表示提交按钮。

name:表示构造出的 HTTP 请求的 query string 的 key,query string 的 value 就是输入框中用户输入的内容。

value:input 标签的值,对于 type 为 submit 类型来说,value 就对应了按钮上显示的文本。

2)构造GET请求

构造GET请求代码:

image-20230526225428749

页面展示的效果:

image-20230526225832128

在输入框中填写数据后,点击提交就构造GET请求并发送出去。

image-20230526225804011

通过Fiddler抓包工具抓取该GET请求,该请求详细信息如下:

image-20230526230411290

注意:除了首行之外,剩余的请求报头Header和请求正文Body部分都是浏览器自主添加的。

3)构造POST请求

构造POST请求代码:

image-20230526225938909

页面展示的效果:

image-20230526225832128

在输入框中填写数据后,点击提交就构造POST请求并发送出去。

image-20230526225804011

通过Fiddler抓包工具抓取该POST请求,该请求详细信息如下:

image-20230526230220335

注意:当method从 GET 变成 POST,数据从请求字符串query string移动到了请求正文body中。

2,通过 Ajax 构造

Ajax(Asynchronous JavaScript and XML)是 2005 年提出的一种 JavaScript 给服务器发送 HTTP 请求的方式。

其主要特点是异步通信,Ajax能够在不刷新整个页面的情况下向服务器发送异步请求,即可以不需要刷新页面/页面跳转就能数据传输。

拓展:同步通信和异步通信

同步执行是指代码按顺序执行,每一行代码执行完后再执行下一行。在同步执行的过程中,如果某一行代码需要等待某个操作完成(例如读取文件或网络请求),那么整个程序就会被阻塞,等待这个操作完成后才能继续执行下一行代码。

同步通信是指发送方在发送数据后,需要等待接收方的响应才能继续执行后续的操作。在同步通信中,发送方和接收方在数据传输过程中需要保持同步,即发送方发送数据后必须等待接收方的响应,接收方收到数据后需要立即响应。同步通信的特点是简单直观,确保数据传输的正确性。但是会导致通信过程中出现阻塞,响应速度慢,系统的可扩展性和并发性较差等问题。

异步通信是指发送方在发送数据后,无需等待接收方的响应即可继续执行后续的操作。在异步通信中,发送方和接收方的数据传输是异步的,即发送方发送数据后无需等待接收方的响应,接收方在收到数据后会立即进行处理,并在处理完成后发送响应。异步通信的特点是响应速度快,系统的可扩展性和并发性较好,但是会增加程序的复杂度和开发难度。

同步和异步生活实例:手机上银行转账

当你想把一张银行卡的钱转账到另外一张银行卡中时,银行转账系统会在你输入转账金额和收款方账户信息后,发送转账请求给银行系统。银行服务器会验证付款方账户余额是否充足,如果付款方账户余额充足,就会返回一条转账成功的响应,告诉你转账操作成功。但是,转账并不是立即完成的。在转账成功的响应返回之后,银行服务器需要一定的时间来处理转账请求,也就是需要过一段时间才能刷新账户余额才能看到钱到账。


这个过程是异步的,不需要等待转账操作完成后才返回响应。


如果你填写的账户信息有误,银行服务器会在处理转账请求时返回一条收款方信息有误,转账失败的响应,告诉你转账操作失败了。这时需要将钱原路返回给付款方,手机银行自动发送一个请求给银行系统,告诉它将钱转回给付款方。等到银行系统收到这个请求后,它才会执行将钱转回给付款方的操作,更新交易记录、信息提示等一系列操作。


这个过程是同步的,需要等待转账操作完成后才能执行后续的操作。

通过 Ajax 构造HTTP请求的代码:

image-20230526230630948

上述 Ajax 代码细节介绍:

在jQuery中,$ 是一个特殊的全局对象,jquery提供的API都是以$.ajax()方法形式来引出,该方法接受一个对象作为参数。

对象中包含了请求的相关配置信息,属性与属性值是以键值对形式存在,键与值之间使用冒号分隔,键值对之间使用逗号分隔。

success声明的回调函数,当服务器收到请求后能够根据请求返回对应的响应才会被调用,如果请求失败或返回的数据格式不正确,则不会触发该函数,此时可以通过 error 声明的回调函数来处理请求失败的情况。

通过Ajax构造请求可以一下创建多个,也就是在<script标签里写多个$.ajax();,请求构造的顺序是从上往下依次执行,但是收到响应的顺序和触发回调函数的顺序也是不确定的,因为网络上存在后发先至的情况。

通过Fiddler抓包工具抓取该GET请求,该请求详细信息如下:

image-20230526230758816

打开开发者工具可查看到报错信息:

image-20230526230916367

产生报错的原因为:上述代码执行只能构造对应的请求往搜狗服务器发送,但无法获取到正确的请求响应信息,而这是因为我们构造的请求,搜狗服务器无法正常处理,故服务器无法返回与请求对应的响应。

通过Fiddler抓包工具抓取该GET请求,该请求响应详细信息如下:

image-20230526231041422

Ajax构造方式与form表单构造方式对比:

Ajax构造方式与form表单构造方式相比,ajax功能更强,不仅支持构造GET和POST请求,还支持构造PUT请求,DELETE请求 …

Ajax构造发送的请求中的请求报头header 和请求正文body可以灵活地进行设置。

3,通过第三方工具构造

除了上述的构造请求的方式,我们还可以通过第三方工具进行构造,例如第三方工具Postman。

首先,打开Postman后,依次点击 Workspaces —> My Workspace :

image-20230526231324453

其次,点击 + 新建标签页:

image-20230526231437656

最后,在该标签页构造HTTP请求

image-20230526232026636

构造的GET请求的相关信息

image-20230526232252852

构造的请求返回的响应信息

image-20230526233043413

GET请求的构造和返回的响应信息:

image-20230526232834824


结语

这就是本期博客的全部内容啦!如果有什么其他的问题无法自己解决,可以在评论区留言哦!

最后,如果你觉得这篇文章写的还不错的话或者有所收获的话,麻烦小伙伴们动动你们的小手,给个三连呗(点赞👍,评论✍,收藏📖),多多支持一下!各位的支持是我最大的动力,后期不断更新优质的内容来帮助大家,一起进步。那我们下期见!

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小杨MiManchi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值