Http协议—请求的构造

news2024/9/23 7:32:17

目录

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

1、form 发送 Get 请求

(1)form 的重要参数

(2)input 的重要参数

2、通过 form 构造 Post 请求

二、通过 ajax 构造 HTTP 请求

1、基于 jQuery 中的 ajax 构造

(1)引入 jQuery 

 (2)使用 jQuery 的 ajax 

 三、通过Java socket 构造 HTTP 请求


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

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

1、form 发送 Get 请求

(这里的URL是胡写的一个URL)

<form action="https://www.sogou.com/index.html" method="get">
    <input type="text" name="username">
    <input type="password" name="password">
    <input type="submit" value="提交">
</form>

(1)form 的重要参数

  • action:构造的 HTTP 请求的 URL 是什么。(要访问哪个资源网址、要把请求交给那个服务器)
  • method:构造的 HTTP 请求的 方法是什么。(只能是 Get / Post
    • Get:参数放在 query string 中
    • Post:参数放在 body 中

(2)input 的重要参数

  • type:表示输入框的类型
    • text:文本;
    • password:密码;
    • submit:提交按钮;
  • name:表示构造出的 HTTP 请求的 query string 的 key。
  • value:input 标签的值。(对于此处 type 为 submit 类型来说,value 就是按钮上显示的文本)

假设用户在此处输入的用户名是 zhangsan ,密码是 123 。

此时的 form 表单生成的要提交的数据就形如:

username=zhangsan&password=123

 

2、通过 form 构造 Post 请求

<form action="https://www.sogou.com/index.html" method="post">
    <input type="text" name="username">
    <input type="password" name="password">
    <input type="submit" value="提交">
</form>

其中的参数和 Get 的参数一样,区别:

  • method 从 get 变成了 post;
  • 数据从 query string 移动到了 body 中。

二、通过 ajax 构造 HTTP 请求

        ajax 全程 Asynchronous Javascript And XML,是 2005 年提出的一种 JavaScript 给服务器发送 HTTP 请求的方式,其特点是不需要 刷新页面/页面跳转 就能进行数据传输。(有时候页面跳转要加载出一个全新的页面,尤其是会有非常复杂的页面)而 ajax 能够让页面不去整个全部加载,而是只加载其中需要变化的某个小部分。

        ajax 通过 js 代码,来构造出 HTTP 请求,在通过 js 代码来处理这些响应,并且把得到的一些数据给更新到页面上。

Asynchronous:异步

        异步的概念在计算机中非常常见。类似等待的过程。

假设在饭店吃饭,我说:“老板,我要一个蛋炒饭”

① 同步阻塞等待:(Scanner、输入流对象、输出流对象)

我就站在前台这里看着他做好,我自己端走。

② 同步非阻塞等待:(ajax)

我在前台这里看一下,发现饭还没好,我就出去逛一圈,过一会再来前台这里看一眼,发现饭还没好,我再出去玩一会。经过若干次之后,发现饭好了,我就自己端走了。

③ 异步等待:

我直接啥都不管了,就找个位置坐下(玩手机....),该干啥干啥。等到饭好了之后,人家直接给我端上来。

同步和异步之间的区别:

看结果是调用者主动关注(同步),还是被调用者来给调用者通知(异步)。

        ajax就是基于 异步等待 的方式来进行的。

        首先构造出一个 HTTP 请求,发给服务器。但是浏览器不确定服务器啥时候才有响应,于是就先不管了,浏览器里就继续执行其他代码(该干啥干啥),等到服务器的相应回来了之后,再由浏览器通知咱们对应的 js 低吗,以回调函数的方式来处理响应。

1、基于 jQuery 中的 ajax 构造

(1)引入 jQuery 

  • 搜索 jQuery cdn关键词
  • 在结果中找一个合适的 cdn 的url(http://libs.baidu.com/jquery/2.0.0/jquery.min.js)
  • 打开对应的 url,加载出 jquery 本体
  • 复制粘贴内容到本体文件

 (2)使用 jQuery 的 ajax 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>


    <script src="jquery.js"></script>
    <script>
        $.ajax({
            type:'get',
            url:'http://www.sogou.com/index.html',
            success:function(body) {
                //success 对应一个回调函数
                //这个函数就会在正确获取到 HTTP 响应之后来调用
                // “异步”
                //回调函数的参数,就是 HTTP 响应的 body 部分
                console.log("获取到响应数据!" + body);
            },
            error:function() {
                //error 也是一个回调函数
                //这个函数会在请求失败后触发
                // “异步”
                console.log("获取响应数据失败!");
            }
        });
    </script>


</body>
</html>

  • ① $ 
  • ② $.ajax 中传入的参数是一个对象 
  • ③ type
  • ④ url
  • ⑤ 回调函数

注意:

如果直接这样发送,浏览器会认为这是一个 “出错” 的请求,因为浏览器禁止 ajax 跨域访问。(即跨越多个域名/服务器)

跨域操作:

当前页面处在的服务器是本地文件,页面中的 ajax 的请求的URL的域名是 www.sogou.com,这样就触发了跨域操作。

不算跨域操作:

当前页面处在的服务器,就是在 www.sogou.com中,页面再通过 ajax 请求URL的域名为 www.sogou.com就不算跨域。

 

因此,要使用 ajax ,我们就需要自己实现一个服务器,让页面和 ajax 的地址都是这一个服务器即可。

 三、通过Java socket 构造 HTTP 请求

发送 HTTP 请求:本质上就是按照 HTTP 的格式往 TCP Socket 中写入一个字符串;

接收 HTTP 响应:本质上就是从 TCP Socket 中读取一个字符串,再按照 HTTP 的格式来解析。        

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

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

相关文章

动态网站开发讲课笔记07:EL和JSTL

文章目录 零、本节学习目标一、EL&#xff08;一&#xff09;EL基本语法1、EL的概念2、EL的语法3、案例演示&#xff08;1&#xff09;用EL读取保存的信息&#xff08;2&#xff09;使用Java代码与EL获取信息的对比 4、EL基本语法的特点 &#xff08;二&#xff09;EL中的标识符…

从语言模型到ChatGPT,大模型训练全攻略

文&#xff5c;python 前言 你是否想过&#xff0c;为什么ChatGPT能够如此火爆呢&#xff1f;我认为这主要是因为ChatGPT提供了好玩、有用的对话式交互功能&#xff0c;能够为用户提供帮助&#xff0c;而不仅仅是依靠“大”模型的魅力。毕竟&#xff0c;GPT-3在2020年就已经推出…

RedHat yum没有已启用源的解决方法

一般安装的红帽系统&#xff0c;自带的yum在没有付费的情况下是无使用的&#xff0c;所以我们要进行换源。 1、环境准备 先检查以下我们的linux系统环境&#xff0c;看看是不是Redhat7的版本 &#xff0c;出现如下图所示的界面 cat /etc/redhat-release 检查系统中是否安…

科技云报道:重塑增长新动能,“数智融合”捷径该如何走?

科技云报道原创。 如果说&#xff0c;过去是数字化转型的试验阶段&#xff0c;实施的是开荒动土、选种育苗&#xff0c;那么当前要进行的是精耕细作、植树造林。 数字化转型已进入了由个别行业、个别场景的“点状应用”向各行各业全流程、全环节“整体渗透”的关键期。 云计算…

yolov5-7.0 训练自己的数据集之检测数据集

YOLOv5是一种单阶段目标检测算法&#xff0c;有很高的精度和速度&#xff0c;因为项目需求&#xff0c;需要利用yolov5-7.0训练自己的目标检测数据集。 假设&#xff0c;环境已经配置完成&#xff01; 1&#xff09;准备数据集 在D:\Graduation_Project_Coding\network_class…

QGIS中导入dwg文件并使用GetWKT插件获取绘制元素WKT字符串以及QuickWKT插件实现WKT显示在图层

场景 QGIS在Windows上下载安装与建立空间数据库连接&#xff1a; https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/124108040 在上面实现QGIS的安装之后&#xff0c;版本是3.26.3。 业务需求: 1、在dwg文件上绘制多边形区域&#xff0c;并获取绘制区域的wkt字…

如何在美国虚拟主机上安装WordPress?

如果你想在美国虚拟主机上搭建一个博客网站&#xff0c;那么WordPress是一个非常好的选择。本文将介绍如何在美国虚拟主机上安装WordPress&#xff0c;帮助你快速建立一个美观、高效的博客网站。 一、选择合适的虚拟主机服务商 在安装WordPress之前&#xff0c;你需要选择一个可…

[Netty] Netty自带的心跳机制 (十五)

文章目录 1.IdleStateHandler介绍2.IdleStateHandler源码解析3.IdleStateHandler总结 1.IdleStateHandler介绍 Netty服务端心跳机制: IdleStateHandler, 这个类可以对三种类型的心跳检测。 ChannelHandler.Sharable public class IdleHandler extends ChannelInboundHandlerA…

redis7详解

Redis基础 文章目录 一、Redis入门概述是什么&#xff1f;能干嘛&#xff1f;主流功能与应用优势 Redis7新特性 二、Redis安装配置Redis7安装步骤Redis7卸载步骤 三、Redis10大数据类型Redis 键(key)1、Redis 字符串&#xff08;String&#xff09;2、Reids列表&#xff08;Lis…

java版本电子招标采购系统源码—企业战略布局下的采购

​ 智慧寻源 多策略、多场景寻源&#xff0c;多种看板让寻源过程全程可监控&#xff0c;根据不同采购场景&#xff0c;采取不同寻源策略&#xff0c; 实现采购寻源线上化管控&#xff1b;同时支持公域和私域寻源。 询价比价 全程线上询比价&#xff0c;信息公开透明&#xff0…

谷歌云 | 内部 HTTP(S) 负载均衡器现在可以在全球范围内访问

【本文由Cloud Ace整理发布&#xff0c;Cloud Ace 是谷歌云全球战略合作伙伴&#xff0c;拥有 300 多名工程师&#xff0c;也是谷歌最高级别合作伙伴&#xff0c;多次获得 Google Cloud 合作伙伴奖。 作为谷歌托管服务商&#xff0c;我们提供谷歌云、谷歌地图、谷歌办公套件、谷…

店铺销售管理系统有哪些用?该如何选?

现在市场竞争越来越激烈&#xff0c;实体店想要吸引更多意向客户&#xff0c;快速提高销量&#xff0c;使用店铺管理系统来智能化管理店铺&#xff0c;已经成为不可或缺的手段。 店铺管理系统能够帮助实体店老板实现店铺销售和库存管理的自动化和集中化&#xff0c;提高门店的销…

Ceph入门到精通-podman 入门实战

目录 podman安装podman制作本地镜像podman(docker)命令回顾podman快速入门 一入编程深似海&#xff0c;从此节操是路人。 最近使用podman&#xff0c;就想着写一篇总结性的笔记&#xff0c;以备后续参考。就如同写代码&#xff0c;不写注释&#xff0c;过了一段时间可能会想这…

【Leetcode】572.另一棵树的子树

另一棵树的子树 题目思路代码 题目 思路 这道题目主要用到判断两个二叉树是否相同 对root为根节点的树进行递归遍历判断 是否存在一颗子树和以subRoot为根节点的树 代码 class Solution {public boolean isSubtree(TreeNode root, TreeNode subRoot) {if(root null){return…

HJL-93/A数字式交流三相电流继电器 导轨安装 约瑟JOSEF

品牌&#xff1a;JOSEF约瑟名称&#xff1a;数字式交流三相电流继电器型号&#xff1a;HJL系列功率消耗&#xff1a;≤5W触点容量&#xff1a;250V/5A额定电压&#xff1a;58、100、110、220V HJL系列 数字式交流三相电流继电器型号&#xff1a; HJL-93/AY数字式交流三相电流继…

收藏~六大网站访客类型及应对方式

收藏&#xff01;六大网站访客类型及应对方式&#xff01; 当涉及到与潜在客户接触时&#xff0c;速度是关键。毕竟&#xff0c;当一个潜在客户来到你的网站时&#xff0c;你只有10秒钟的时间来捕捉他们的兴趣。我们把这种主动的方法称为 "扑捉"。它确保你的销售团队…

《百年孤独》

《创世记》之后&#xff0c;首部值得全人类阅读的文学巨著。 — 纽约时报 加西亚 马尔克斯以小说作品创建了一个自己的世界&#xff0c;一个浓缩的宇宙&#xff0c;其中喧嚣纷乱却又生动可信的现实&#xff0c;映射了一篇大陆及其人民的富足与贫困。 — 诺贝尔文学奖颁奖辞 马…

元宇宙数字人直播

数字人直播发展趋势主要有以下几个方面&#xff1a; AI技术&#xff1a;随着人工智能技术的不断发展&#xff0c;数字人直播将更加贴近真实&#xff0c;虚拟人物的表现力和情感交流能力将会得到大幅提升。 元宇宙&#xff1a;元宇宙是一种虚拟现实的空间&#xff0c;数…

如何把视频里的声音提取出来,4种有效方法学起来

在我们日常生活中&#xff0c;可能会有需要从视频文件中提取音频的情况&#xff0c;比如想要将视频中的歌曲或语音内容提取出来&#xff0c;或者电脑上看视频时&#xff0c;总有一些很有意思的BGM&#xff0c;想录下来或者提取出来单独使用&#xff0c;不过有些小伙伴可能不知道…

分布式事务Seata-TCC事务模式

承接上文Seata强一致性事务模式XA的设计理念 通用TCC模式 TCC是二阶段提交协议&#xff0c;Try-Confirm-Cancel&#xff08;资源预留、确认操作、取消操作&#xff09;&#xff0c;Try是对当前业务资源的检查&#xff0c;如果成功&#xff0c;则Confirm提交&#xff0c;否则C…