构造HTTP请求方式
我们通过对HTTP
了解协议报头格式的学习,我们可以通过三种基本方法来构建它HTTP
请求! 请求是在客户端构建的,也就是属于前端的工作! 因此,这三种结构要求大多是通过前端代码实现的,但我们也可以通过java
代码基于socket
来实现!
基于
HTML/JS
实现构造!
- 基于
form
表单 - 基于
ajax
基于
java
实现代码结构!
- 基于
socket
form表单
HTML中的form
可以构建表单HTTP
请求! 我们学习以下代码!
<!--form形式结构http请求--> <form action="https://www.csdn.net/" method="get"> <!--action 需要提交的服务器存储url,method提交请求的方法! --> <input type="text" name="name"> <!--这里通过input
标签实现--> <input type="password" name="password"> <!--这里的name这是一个特殊的属性,是的name保存键值对中key,专门用于http结构要求!--> <input type="submit"> <!--提交按钮--> </form>
- <
form
></form
> 该标签允许用户向服务器输入一些信息! 可以存储用户交互的组件 描述数据的方式, 提交到哪个页面.
所以我们通过了form
表单标签可以写一个http
请求!
<form action="https://www.csdn.net/" method="get">
这里以键值对的形式 keyaction
我们需要请求服务器的保存值url
method
我们通过这种方式保存请求 这里的方法只能是post
和get
我们知道post
保存请求中要传输的数据body
中get
方法要求传输的数据得到保证url
中的querystring
查询字符串! 我们在这里通过get
构造方法,也就是说,以后会通过querystring
将数据传输到服务器!
inpt
标签 我们知道form
标签中的组件可可以交互标签中的组件! 我们通过input
标签!type
该属性的值代表该属性input
具有不同含义!type=text
这是一个普通的文本框!type=password
这是一个用于提交密码的文本框(输入内容不可见)type=submit
提交表单按钮,我们最终将构建我们http
向服务器提交请求!
<input type="text" name="name">
<input type="password" name="password">
这里的name
属性保存的就是querystring
查询字符串中键值对中的key
!
我们在输入框中输入的数据就对应了该name
属性下的value
值我们提交后就会在查询字符串中保存!
我们向服务器提交表单后,就构造了一个get
方法的http
请求!
我们发现我们已经跳转到了CSDN
的网站上! 因为我们提交的服务器url
就是C
站的首页!
我们通过fiddler
抓包,看我们构造的请求和服务器给我们返回的响应是怎样的!
GET https://www.csdn.net/?name=bug%E9%83%AD&password=666666 HTTP/1.1
Host: www.csdn.net
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Cookie: uuid_tt_dd=10_30601611580-1653459529558-297725; log_Id_pv=846; Hm_lvt_6bcd52f51e9b3dce32bec4a3997715ac=1655356530,1655382747,1655518119,1655547417; Hm_up_6bcd52f51e9b3dce32bec4a3997715ac=%7B%22islogin%22%3A%7B%22value%22%3A%221%22%2C%22scope%22%3A1%7D%2C%22isonline%22%3A%7B%22value%22%3A%221%22%2C%22scope%22%3A1%7D%2C%22isvip%22%3A%7B%22value%22%3A%220%22%2C%22scope%22%3A1%7D%2C%22uid_%22%3A%7B%22value%22%3A%22weixin_52345071%22%2C%22scope%22%3A1%7D%7D; Hm_ct_6bcd52f51e9b3dce32bec4a3997715ac=6525*1*10_30601611580-1653459529558-297725!5744*1*weixin_52345071; log_Id_view=1489; __51uvsct__JQTDiOVZ2pRjGa1K=53; __51vcke__JQTDiOVZ2pRjGa1K=1e84abb9-62df-5ecc-828b-e3052ffe5150; __51vuft__JQTDiOVZ2pRjGa1K=1653459532473; log_Id_click=1057; __gads=ID=f159decf46255d5e-22bbe38364d300d7:T=1653459564:RT=1653459564:S=ALNI_Ma5D0b1QWC6YQ8t-on_R6zAurFD0g; __gpi=UID=000005b633162c48:T=1653459564:RT=1655010298:S=ALNI_Mbd0__O7WINiqjmFo0HJe78mx_xOA; ssxmod_itna=eqUxBDcDu0D=34Bake5DkF6diKbMk00fOexGXhIYDZDiqAPGhDC34UeDIYGCYRRrBe+C3jjBRoqH8m4WT4YKC4I0frQ4B3DEx0=PCjeKiinDCeDIDWeDiDGR7D=xGYDj0KGWD4qDOD3qGyS+=Di8t9DdvC7uQDmTNDGup6D7QDIw6g9frVAeDSW7UxKG=DjubD/4xWHeRWH=5DbgeuDeiDtqD9lw=Dbfd3x0pymkU7wGwIbt4US+NDxBtQExDf7kGC4t5D9h6IOfkD0wEY9xpxWiez8AYRgY5NBietW7ePBg+Ci0Dz4+Dd35DuxDG4ka75qiDD==; ssxmod_itna2=eqUxBDcDu0D=34Bake5DkF6diKbMk00f2DA=uxPtD/K3KDFODxDIg8qqFGFB+oQwiXsYI1EvQw7bKMRj1/+6eoNOKGbng2INO81fi6zL/uMizdaYIy8Dg0Z9bnV80FIZXBPsk1hIg=n=R0n=VW7Q5+IQ3RbsCx9C=gvG2m5bN/y=qFOwqKyQG8v4=B7AYSO+lPqpUC3bRn8IazEFbzT6GgctB3SfmO8GDUSh7RSf/OQhrPdAPk8fRzjITkCRxdKw+OHwVQYb/oIrCR+yC6KgAucT6oFi6ueM/6w10qzQbZHZ68tTRmVimrsWGL+aE/ri7Rh/FgIrLm2OQPhfmmDuuDqhW914PEnRcQnKuAEKeuzPnFpYxqg0ATFWQmwx82Ie+oD07cGPD7=DYF=eD===; UserName=weixin_52345071; UserInfo=26ede6cf39e94eab9c6265a032aa59fa; UserToken=26ede6cf39e94eab9c6265a032aa59fa; UserNick=bug+%E9%83%AD; AU=5FF; UN=weixin_52345071; BT=1653462761522; p_uid=U010000; c_dl_prid=1654675272560_674132; c_dl_rid=1655261165060_497667; c_dl_fref=https://so.csdn.net/so/search; c_dl_fpage=/download/weixin_41174502/12247848; c_dl_um=distribute.pc_relevant.none-task-blog-2%7Edefault%7Ebaidujs_utm_term%7Edefault-0-109910474-blog-119543816.pc_relevant_antiscanv2; management_ques=1653738813836; historyList-new=%5B%22pv%E4%BF%A1%E5%8F%B7%E9%87%8F%20%E4%BA%92%E6%96%A5%E5%92%8C%E5%90%8C%E6%AD%A5%22%5D; BS_coupon=20220618; csrfToken=e_t4KDVKgBezzgQgdwsnos36; c_pref=default; c_ref=default; c_first_ref=default; c_first_page=https%3A//www.csdn.net/%3Fname%3Dbug%25E9%2583%25AD%26password%3D6666666; c_segment=13; dc_tos=rdo8dm; Hm_lpvt_6bcd52f51e9b3dce32bec4a3997715ac=1655552363; dc_sid=6f420d07abdfa80dfbad71a91b5f6c41; __vtins__JQTDiOVZ2pRjGa1K=%7B%22sid%22%3A%20%22ded005ac-68ee-549d-989b-5d0fa7f4a0a1%22%2C%20%22vd%22%3A%201%2C%20%22stt%22%3A%200%2C%20%22dr%22%3A%200%2C%20%22expires%22%3A%201655554164935%2C%20%22ct%22%3A%201655552364935%7D; c_hasSub=true; c_utm_source=702048761; logo_advert_close=1; c_page_id=default; dc_session_id=10_1655552360673.249126; c_dsid=11_1655552362461.267119
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: cross-site
Sec-Fetch-User: ?1
可以看到这里的请求和我们预想构造的一样!
HTTP/1.1 200 OK
Server: openresty
Date: Sat, 18 Jun 2022 11:44:14 GMT
Content-Type: text/html; charset=utf-8
Connection: keep-alive
Keep-Alive: timeout=20
Vary: Accept-Encoding
X-Response-Time: 376
x-xss-protection: 1; mode=block
x-content-type-options: nosniff
x-download-options: noopen
x-readtime: 376
Strict-Transport-Security: max-age=31536000
Content-Length: 520755
<!doctype html><html lang="zh" data-server-rendered="true"><head><title>CSDN - 专业开发者社区</title> <meta name="keywords" content="CSDN博客,CSDN学院,CSDN论坛,CSDN直播"> <meta name="description" content="CSDN是全球知名中文IT技术交流平台,创建于1999年,包含原创博客、精品问答、职业培训、技术论坛、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区."> <meta http-equiv="content-type" content="text/html;charset=utf-8"> <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, minimal-ui"> <meta name="referrer" content="always"> <!----> <!----> <!---->
<script src="https://g.csdnimg.cn/tingyun/tingyun.js"></script>
<!----> <!----> <!----> <link rel="shortcut icon" href="https://g.csdnimg.cn/static/logo/favicon32.ico" type="image/x-icon"> <link rel="canonical" href="https://www.csdn.net"> <!---->
<meta name="toolbar" content={"type":"0","fixModel":"1"} />
<meta name="report" content={"spm":"1000.2115"} />
<script src="https://g.csdnimg.cn/??lib/jquery/1.12.4/jquery.min.js,user-tooltip/2.2/user-tooltip.js,lib/qrcode/1.0.0/qrcode.min.js"></script> <script src='//g.csdnimg.cn/common/csdn-report/report.js' type='text/javascript'></script>
<script src="https://g.csdnimg.cn/user-ordercart/2.0.1/user-ordercart.js?ts=2.0.1"></script>
<!---->
<script src="https://g.csdnimg.cn/common/csdn-login-box/csdn-login-box.js"></script>
<script src="https://g.csdnimg.cn/user-ordertip/3.0.2/user-ordertip.js?t=3.0.2"></script>
<!----> <!----> <!----> <!---->
<script> window.TINGYUN && window.TINGYUN.init && window.TINGYUN.init(function (ty_rum) {
ty_rum.server = {
"event_timeout": 60000, "dr_threshold": 4000, "opt_custom_param_rule": [], "cross_page_delay": 3000, "router_enable": true, "fp_threshold": 2000, "token": "568934913a6343de840a781ca5eaba4b", "beacon": "wkbrs1.tingyun.com", "trace_threshold": 7000, "x_server_switch": true, "ignore_err": false, "id": "hWg-u0rE5b8", "key": "Z1Tu5hoKbGw", "fs_threshold": 4000 }; }); </script>
<!---->
<script src="https://g.csdnimg.cn/common/csdn-toolbar/csdn-toolbar.js"></script>
<link rel="stylesheet" href="https://csdnimg.cn/release/cmsfe/public/css/common.ee34ee2e.css"><link rel="stylesheet" href="https://csdnimg.cn/release/cmsfe/public/css/tpl/www-index-new/index.9322d3e1.css"></head> <body><div id="toolbarBox" style="min-height: 48px;"></div> <div id="app"><div><div class="main"><div class="page-container page-component"><div><div class="home_wrap"><div class="content_wrap"><div id="floor-nav_557" floor-index="0"><div comp-data="[object Object]" floor-data="[object Object]" class="blog-nav-tag" data-v-f8e9e086><div class="blog-nav " data-v-f8e9e086><img src="https://img-home.csdnimg.cn/images/20220107105619.png" alt class="blog-nav-down " data-v-f8e9e086> <div class="blog-nav-box" data-v-f8e9e086><ul class="def" data-v-f8e9e086><!----> <!----> <!----> <!----> <li class="navigation-right " data-v-f8e9e086><a href="https://blog.csdn.net/nav/back-end" data-report-click="{
"spm":"1001.2100.3001.7366","extend1":"back-end"}" data-report-view="{
"spm":"1001.2100.3001.7366","extend1":"back-end"}" data-v-f8e9e086>后端</a></li><li class="navigation-right " data-v-f8e9e086><a href="https://blog.csdn.net/nav/web" data-report-click="{
"spm":"1001.2100.3001.7366","extend1":"web"}" data-report-view="{
"spm":"1001.2100.3001.7366","extend1":"web"}" data-v-f8e9e086>前端</a></li><li class="navigation-right " data-v-f8e9e086><a href="https://blog.csdn.net/nav/mobile" data-report-click="{
"spm":"1001.2100.3001.7366","extend1":"mobile"}" data-report-view="{
"spm":"1001.2100.3001.7366","extend1":"mobile"}" data-v-f8e9e086>移动开发</a></li><li class="navigation-right " data-v-f8e9e086><a href="https://blog.csdn.net/nav/lang" data-report-click="{
"spm":"1001.2100.3001.7366","extend1":"lang"}" data-report-view="{
"spm":"1001.2100.3001.7366","extend1":"lang"}" data-v-f8e9e086>编程语言</a></li><li class="navigation-right " data-v-f8e9e086><a href="https://blog.csdn.net/nav/java" data-report-click="{
"spm":"1001.2100.3001.7366","extend1":"java"}" data-report-view="{
"spm":"1001.2100.3001.7366","extend1":"java"}" data-v-f8e9e086>Java</a></li><li class="navigation-right " data-v-f8e9e086><a href="https://blog.csdn.net/nav/python" data-report-click="{
"spm":"1001.2100.3001.7366","extend1":"python"}" data-report-view="{
"spm":"1001.2100.3001.7366","extend1":"python"}" data-v-f8e9e086>Python</a></li><li class="navigation-right " data-v-f8e9e086><a href="https://blog.csdn.net/nav/ai" data-report-click="{
"spm":"1001.2100.3001.7366","extend1":"ai"}" data-report-view="{
"spm":"1001.2100.3001.7366","extend1":"ai"}" data-v-f8e9e086>人工智能</a></li><li class="navigation-right " data-v-f8e9e086><a href="https://blog.csdn.net/nav/big-data" data-report-click="{
"spm":"1001.2100.3001.7366","extend1":"big-data"}" data-report-view="{
"spm":"1001.2100.3001.7366","extend1":"big-data"}" data-v-f8e9e086>大数据</a></li><li class="navigation-right " data-v-f8e9e086><a href="https://blog.csdn.net/nav/algo" data-report-click="{
"spm":"1001.2100.3001.7366","extend1":"algo"}" data-report-view="{
"spm":"1001.2100.3001.7366","extend1":"algo"}" data-v-f8e9e086>数据结构与算法</a></li><li class="navigation-right " data-v-f8e9e086><a href="https://blog.csdn.net/nav/avi" data-report-click="{
"spm":"1001.2100.3001.7366","extend1":"avi"}" data-report-view="{
"spm":"1001.2100.3001.7366","extend1":"avi"}" data-v-f8e9e086>音视频</a></li><li