【JavaEE】HTTP请求的构造

news2024/11/25 22:48:26

目录

1、通过form表单构造HTTP请求

2、通过JS的ajax构造HTTP请求

3、Postman的安装和简单使用


常见的构造HTTP请求的方式有一下几种:

  1. 直接通过浏览器的地址栏,输入一个URL,就可以构造一个GET请求
  2. HTML中的一些特殊标签,也会触发GET请求,例如:link、script、img、a....
  3. 通过form表单标签可以实现GET和POST请求的构造
  4. 通过JS中ajax实现各种请求的构造

在编写前端程序的时候,通常使用HTML和JS来构造请求。再简单方便一点,我们还可以使用一些工具来构造HTTP请求,例如使用postman软件。

1、通过form表单构造HTTP请求

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

🍂form发送GET请求

    <form action="http://www.baidu.com/abc" method="GET">
        <input type="text" name="userId">
        <input type="password" name="password">
        <input type="submit" value="提交">
    </form>

form标签的一些属性:

  • action:表示构造的HTTP请求的URL是什么
  • method:表示构造的HTTP请求的方法是GET还是POST(form只支持HTTP方法GET和POST

下面我们来看请求构造的请求返回的页面和抓到的这个请求的报。 

 

这里我们就来看一下我们写的代码和填写的表单,与形成的请求的首行之间的联系。

 🍂form表单发送post请求

构造一个POST请求,我们只需要将form表单中的method属性的值改为POST即可。

    <form action="http://www.baidu.com/abc" method="POST">
        <input type="text" name="userId">
        <input type="password" name="password">
        <input type="submit" value="提交">
    </form>

我们通过fiddler抓取我们构造的这个报来看一下。 

 可以看见我们构造的POST请求,首行中没有查询字符串(query string), 但是请求正文中出现了我们在网页表单上填写的内容。这个时候请求头(header)中出现了Content-Length和Content-Type字段,用来表示请求正文中的内容的长度和内容的构造格式。与GET的理解方式相似,代码和输入框与POST请求的的对应关系,这里就不再展示。


2、通过JS的ajax构造HTTP请求

从前端角度,处理浏览器地址栏能构造GET请求,form表单能构造GET和POST请求之外,还可以通过ajax的方式来构造HTTP请求。当然ajax的功能比form更加强大。

ajax是Asynchronous JavaScript And XML的缩写。ajax是前端后端异步交互的一种方式

1️⃣这里的XML是一种基于标签形式的自定义数据格式的方式,XML和HTML都是由标签构成的,对于html来说,它的标签数量和含义都是由标准委员会规定好的,但是相对于XML来说,它的标签都是自定义的。XML和前端没有关系,这只是数据的一种组织方式。XML的格式如下

<request>
    <userld>zhangsan</userId>
    <password>12346</password>
    <age>20</age>
</request>

 2️⃣Asynchronous这个词的含义是"异步"。说到这里有没有老铁联想到synchronized,它表示的是"同步"。

🎊我们在加锁的场景中,synchronized认为是互斥的。就是在同一时间多个线程访问同一个资源,只有一个线程能够访问,其他线程需要阻塞等待;

🎊在IO场景中同步和异步的区别是,同步表示在请求的发起者,自行获取响应。异步表示请求的发起者不关心结果,而是由被请求的这一方,计算成结果之后,把结果推送给发起者。这个的区别就是请求发出后是否主动获取响应结果。

这里我们通过一个例子来了解一下IO场景下的同步和异步。你去餐馆吃饭,给老板说"老板来份油泼面",然后站在窗口等,老板做好之后,你自己端着饭找位置坐下。而异步就是你对老板说了之后,你就不管了,老板把饭做好之后,端到你面前来。只关注饭(响应)是你自己获取还是老板给你送。

3️⃣JS中提供了原生的ajax的api,但是使用起来比较麻烦,所以我们这里使用JQuery里面的提供ajax的api来构造HTTP请求。这里小编已经jQuery下载到了本地,使用的相对地址引入的jQuery,但是我们也可以找到jQuery的网络路径,将其引入到代码中。在编写代码的时候,使用jQuery时,可以使用$符号表示jQuery,也可以使用完成的单词来表示,这里小编更建议使用完成的单词表示,因为有的库也会使用$符号作为变量名,我们在代码中如果引入了不止一个库,那么就会容易出现错误。

下面时使用jQuery构造一个请求的基本格式,当然ajax方法中可以设置的字段不止代码中出现的这些。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>ajax</title>
    <script src="../jquery.min.js"></script>
</head>
<body>
    <script>
        jQuery.ajax({
            url:"https://www.baidu.com",
            type:"get",
            data:"这是 body",
            contentType:"text/plain",
            //此处success就声明了一个回调函数,会在服务器返回一个正确的响应的时候,被浏览器自动执行。
            //这里的执行过程就是"异步"的。
            //在我们页面的JS中,把请求发送出去之后就不管了,就继续执行后续的代码,直到服务器将响应返回来之后,
            //浏览器将这个响应给我们的代码之后,浏览器才会执行该方法。
            success: function(body) {
                //这里写处理响应的代码
                alert(body);
            }
        });
    </script>
</body>
</html>

这里需要了解一下回调函数,回调函数就是在代码执行的时候,并不会立即执行,而是在等到合适的时机再执行,例如在多线程中重写run方法和lambda表达式都是回调函数,还有集合类中的Comparable接口中的compare To方法和Comparator接口中的compare方法在代码中使用的时候都是回调的。

将上述的代码运行,给百度的服务器发送请求,代码在执行的过程中会出错。

 这个报错是ajax的一个典型的跨域问题,这是浏览器为了限制安全问题引入的保护机制。使用ajax构造的请求,要求运行ajax代码的页面的域名,要和ajax里请求访问的域名是一致的,两个域名不一致的话,哪怕服务器给你响应了数据,浏览器也不能处理,还是会报错。但是form表单标签构造请求是可以跨域访问的,即a网站的页面可以请求b网站的数据。

✨总结

ajax相比于form功能更强,构造请求更灵活,form只支持get和post两种HTTP方法,而ajax不仅可以支持这两种HTTP方法,还可以支持put、delete等,ajax还可以灵活的设置header和body.

3、Postman的安装和简单使用

上述的重点说到的构造请求的方式,不论哪一种,构造请求都是需要我们手动写代码的,但是这里使用的Postman在构造请求的时候他会自己生成某种语言的HTTP请求。点击这个连接就可以进入官网:https://www.postman.com/downloads/下载。

点击进入官网页面之后,按照下面的步骤进行就可以了。

下载完成之后,需要我们自己创建一个用户,创建完成之后,第一次登录Postman的页面是这个样子需要点击workspaces创建一个工作空间。

 

 点击+,创建一个标签页。

 构造HTTP请求。

 以上说到就是Postman最基本的用法,还有一个好用的地方就是点击</>符号,它可以生成各种语言的构造HTTP请求的代码。想要使用jQuery版本的代码,直接选中,复制放在jQuery的代码中就可以使用,前提是你在代码中引入了jQuery。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/753527.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux】1、装机、装操作系统、部署

文章目录 一、装系统1.0 格式化 U 盘1.1 做启动盘1.1.2 rufus1.1.2 poweriso 1.2 安装步骤 二、恢复系统2.1 BootManager2.2 recovery mode 一、装系统 下载地址&#xff1a; http://old-releases.ubuntu.com/releases/16.04.5/ubuntu-16.04.5-server-amd64.isohttps://mirro…

基于STM32 ARM+FPGA伺服控制系统(二)软件及FPGA设计

完整的伺服系统所包含的模块比较多&#xff0c;因此无法逐一详细介绍&#xff0c;所以本章着重介绍 设计难度较高的 FPGA 部分并简单介绍 ARM 端的工作流程。 FPGA 部分主要有 FOC 算法、电流采样算法及编码器采样算法&#xff0c;是整个控制系统的基础&#xff0c;直接…

本地appserv外挂网址如何让外网访问?快解析端口映射

一、appserv是什么&#xff1f; AppServ 是 PHP 网页架站工具组合包&#xff0c;作者将一些网络上免费的架站资源重新包装成单一的安装程序&#xff0c;以方便初学者快速完成架站&#xff0c;AppServ 所包含的软件有&#xff1a;Apache[、Apache Monitor、PHP、MySQL、phpMyAdm…

好物推荐文案怎么写吸引人?纯干货

互联网上充斥着各种各样好物种草文&#xff0c;一不小心就跌入了软文的圈套中&#xff0c;好物推荐文案写得好&#xff0c;流量绝对少不了。 好物推荐文案怎么写吸引人&#xff1f;通过整理总结上百篇爆款种草文案&#xff0c;总结出一套超实用的文案写作妙招&#xff01;纯干…

活动页服务端渲染探索

目标 通过采用在服务端渲染激励页的方式&#xff0c;降低页面加载白屏时间&#xff0c;从而提升激励 H5 渲染体验。 架构设计 前端服务框架调研选型 只对比分析以下两种方案&#xff1a; Vue3 Nuxt3 WebpackNext.js React Node.js ’Nuxt3Next.js介绍Nuxt是一个基于Vu…

flask实现get和post请求

1、实现get请求 在项目根目录创建app.py 代码如下&#xff1a; from flask import Flask,render_template,requestapp Flask(__name__)app.route("/regist/user/", methods[GET]) def regist():return render_template("regist.html") #默认去templat…

三维 GIS 引擎该用什么?结合目前主流引擎进行分析

相信大多数人在谈到三维 GIS 引擎时&#xff0c;第一个想到的首先是 CesiumJS&#xff0c;CesiumJS 以其免费开源的特点&#xff0c;快速占领了三维 GIS 这个领域&#xff0c;同时也催生了许多以 CesiumJS 为基础的衍生产品。CesiumJS 作为一个功能强大的 JavaScript 库&#x…

3ds Max 无插件制作燃烧的火焰动画特效

推荐&#xff1a; NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 在 3ds Max 中对火焰进行动画处理 如果您能找到“大气装置”设置&#xff0c;这很容易做到。基本上&#xff0c;你选择一个“Gizmo”&#xff08;BoxGizmo&#xff0c;SphereGizmo或CylGizmo&#xff09;&…

HashMap的遍历方式及底层原理

目录 概述MapMap的全谱系图HashMapkey和value HashMap的四种遍历方式keySetvaluesentrySetIterator性能分析应用场景二维表 底层原理key是数值型key是字符类型 总结&#xff1a; 概述 Map Map是Java中的一个接口&#xff0c;它继承自Collection接口&#xff0c;定义了键值对的…

GB35114双向身份认证(A级)学习笔记

GB35114双向身份验证学习笔记 温故而知新 SSL单向认证 摘录自&#xff1a;https://blog.csdn.net/qq_45759354/article/details/128672828 SSL协议用到了对称加密和非对称加密&#xff0c;在建立连接时&#xff0c;SSL首先对对称加密密钥使用非对称加密。连接建立好后&…

Docker 安装 Nacos 单节点

Docker 安装 Nacos 单节点 1 搜索 Nacos2 下载 Nacos3 安装 Nacos Nacos&#xff08;中文名“云注册中心和配置中心”&#xff09;是一个用于动态服务发现、配置管理和服务管理的开源项目&#xff0c;它由阿里巴巴集团开发并开源。Nacos提供了一种简单而强大的方式来实现微服务…

自动化用例编写思路 (使用pytest编写一个测试脚本)

目录 一&#xff0c;明确测试对象 二&#xff0c;编写测试用例 构造请求数据 封装测试代码 断言设置 三&#xff0c;执行脚本获取测试结果 四&#xff0c;总结 经过之前的学习铺垫&#xff0c;我们尝试着利用pytest框架编写一条接口自动化测试用例&#xff0c;来厘清接口…

系统调用与函数调用有什么区别?

本文我们来聊聊系统调用与普通的函数调用之间的区别。 作为程序员你肯定写过无数的函数&#xff0c;假设有这样两个函数&#xff1a; void funcB() {} void funcA() { funcB();} 函数之间是可以相互调用的&#xff0c;这很简单很happy有没有。 要知道是代码、是函数就可以相…

ABAP 发送特定格式内容的邮件

项目中&#xff0c;经常会有需求&#xff0c;向客户&#xff0c;供应商发送邮件&#xff0c;但是会有一些格式上的要求。 我们一般使用长文本来处理此类需求 举例&#xff0c;客户需要发送一个如下邮件主体内容&#xff08;带格式&#xff09; Dear Customer, Attached is y…

相机图像质量研究(2)ISP专用平台调优介绍

系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结&#xff1a;光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结&#xff1a;光学结构对成…

洛谷:P5016 龙虎斗 ← NOIP2018 普及组T2

【题目来源】https://www.luogu.com.cn/problem/P5016【题目描述】 轩轩和凯凯正在玩一款叫《龙虎斗》的游戏&#xff0c;游戏的棋盘是一条线段&#xff0c;线段上有 n 个兵营&#xff08;自左至右编号 1∼n&#xff09;&#xff0c;相邻编号的兵营之间相隔 1 厘米&#xff0c;…

psutil库使用详解

一、背景 在Python的世界里&#xff0c;有一些库因其强大的功能和易用性而备受开发者们的喜爱。今天&#xff0c;我们要介绍的就是其中的一员——psutil库。psutil(python system and process utilities)是一个跨平台的第三方库&#xff0c;用于获取系统运行时的进程和系统利用…

MySQL 事务与存储引擎

目录 一、MySQL事务的概念 二、事务的ACID特点 2.1 原子性 2.2 一致性 2.3 隔离性 2.4 持久性 2.5 事务之间的相互影响 三、Mysql及事物隔离级别 3.1 查询全局事务隔离级别 3.2 查询会话事务隔离级别 3.3 设置全局事务隔离级别 3.4 设置会话事务隔离级别 …

Android自定义圆环进度条/刻度仪表盘(单环单点带动画)

效果图: 1.自定义HeartDashBoardView /*** 刻度仪表盘*/ public class HeartDashBoardView extends View {private static final float START_ANGLE 135f;private static final float MAX_ANGLE 270f;private float progress 0;private float centerX;private float center…