????????構(gòu)造HTTP請(qǐng)求的常見方式有,通過form表單標(biāo)簽來實(shí)現(xiàn),通過ajax來實(shí)現(xiàn),這兩種是通過HTML/JS來實(shí)現(xiàn)的,還可通過java使用Socket來進(jìn)行構(gòu)造(本質(zhì)就是根據(jù)不同的格式來解析字符串,處理請(qǐng)求),最簡單的也可以使用一些工具來進(jìn)行構(gòu)造,比如使用postman來進(jìn)行構(gòu)造。
????????用的最多的還是使用HTML/JS來進(jìn)行請(qǐng)求的構(gòu)造
目錄
1、瀏覽器自己構(gòu)造
2、通過form表單構(gòu)造HTTP請(qǐng)求
3、通過ajax構(gòu)造HTTP請(qǐng)求
使用ajax構(gòu)造請(qǐng)求的步驟:
4、通過Java socket 構(gòu)造HTTP請(qǐng)求?
postman下載、使用:
1、瀏覽器自己構(gòu)造
????????地址欄里寫url,構(gòu)造出get請(qǐng)求(點(diǎn)擊a標(biāo)簽,也會(huì)構(gòu)造get請(qǐng)求,img、link、script也會(huì)構(gòu)造get請(qǐng)求)
局限性太大了!
2、通過form表單構(gòu)造HTTP請(qǐng)求
舉例:
<form action="https://baidu.com" method="get">
<input type="text" name="aa">
<input type="text" name="bb">
<input type="submit" value="提交">
</form>
說明:?
?補(bǔ)充:
-
action
中的URL指的是接收請(qǐng)求的服務(wù)器地址。 - 需要搭配input標(biāo)簽使用,否則無法提交
- 構(gòu)造的http請(qǐng)求,input標(biāo)簽中的name屬性表示請(qǐng)求中的key,輸入的內(nèi)容表示請(qǐng)求中的value
- 使用form表單構(gòu)造請(qǐng)求頁面,一定會(huì)發(fā)生頁面跳轉(zhuǎn),如果不想跳轉(zhuǎn),就可以采用ajax來進(jìn)行構(gòu)造請(qǐng)求,在默認(rèn)情況下,使用ajax是不會(huì)引起頁面跳轉(zhuǎn)的
- 構(gòu)造的是get請(qǐng)求,請(qǐng)求內(nèi)容在查詢字符串中,構(gòu)造的是post請(qǐng)求,請(qǐng)求內(nèi)容在body中
3、通過ajax構(gòu)造HTTP請(qǐng)求
????????該方法本質(zhì)上是使用js代碼來構(gòu)造HTTP請(qǐng)求,然后可以使用js代碼來處理請(qǐng)求,最后可以使用js將請(qǐng)求內(nèi)容更新到頁面上。
注意:
????????ajax是基于異步等待來實(shí)現(xiàn)的,除了異步等待這個(gè)概念之外,還有同步等待的概念,asynchronous 表示異步,synchronized表示同步,下面來說一下異步等待與同步等待的區(qū)別:
????????同步等待包括同步阻塞等待與同步非阻塞等待,為了便于介紹和理解,我們采用舉例子的方式來解釋這組概念。
????????假設(shè)你去飯店吃飯,你點(diǎn)了一份特辣的青椒肉絲,老板收到你的請(qǐng)求后,立馬去廚房做飯去了,假設(shè)你坐在座位上等,如果你坐在座位上什么也不干,就等著你的飯做好,然后老板喊你自己端上桌吃,這個(gè)過程相當(dāng)于就是同步阻塞等待。
????????但是如果你是點(diǎn)了餐后,你去做別的事情了,比如刷抖音,打王者啊,然后打完一把就看一下飯有沒有好,經(jīng)過若干次,發(fā)現(xiàn)飯好了,就自己端上來吃,這個(gè)就相當(dāng)于同步非阻塞等待。
????????如果點(diǎn)餐后,你去做別的事該干嘛干嘛,等著老板把飯給你端桌上,然后你直接吃,這個(gè)就相當(dāng)于異步等待。
????????異步等待與同步等待最大的區(qū)別就是到底是調(diào)用者主動(dòng)關(guān)注還是被調(diào)用者給調(diào)用者通知,如果是調(diào)用者主動(dòng)關(guān)注那就是同步,否則就是異步。
使用ajax構(gòu)造請(qǐng)求的步驟:
????????由于原生使用ajax較麻煩,所以我們使用jquery中的ajax來進(jìn)行構(gòu)造,所以先需要引入jQuery,然后使用$對(duì)象調(diào)用ajax函數(shù),參數(shù)是一個(gè)對(duì)象,這個(gè)對(duì)象里面需要包含一些屬性,常見的屬性有type表示請(qǐng)求方法,url表示訪問路徑,success表示正確讀到http響應(yīng)之后需要做的事情,是一個(gè)函數(shù),error表示請(qǐng)求失敗后要做的事情,也是一個(gè)函數(shù)。
第一步,引入jQuery,搜索jQuery cdn,找到j(luò)Query cdn文件的URL,我們選擇min版本的
我一般都是用這個(gè)滴!?
????????將這個(gè)js文件導(dǎo)入到需要使用ajax的HTML代碼中即可,或者直接在HTML代碼中直接導(dǎo)入官網(wǎng)提供的jQuery路徑也是可以的,但是不穩(wěn)定,畢竟jQuery cdn路徑隨時(shí)都有可能改變。
第二步,使用$對(duì)象中的ajax函數(shù),傳入一個(gè)對(duì)象作為參數(shù),這個(gè)對(duì)象里面需要包含HTTP方法類型type,請(qǐng)求的url,請(qǐng)求成功后該做什么success,失敗后該做什么error,請(qǐng)求內(nèi)容body,當(dāng)然完整的參數(shù)屬性不止這一些,這里僅列舉了一些必要的屬性,更多屬性可以參考官方文檔手冊(cè)。
?
<!-- // 引入jQuery -->
<script src="jquery路徑"></script>
<script>
$.ajax({
// 方法類型
type:"HTTP方法類型",
url:"請(qǐng)求頁面路徑",
success: function(){
// 請(qǐng)求處理這個(gè)后,該做什么
},
error:function(){
// 請(qǐng)求失敗后,該做什么
}
})
</script>
????????使用ajax給力扣官網(wǎng)傳請(qǐng)求,由于瀏覽器不支持ajax跨域訪問,所以請(qǐng)求也是無法成功被力扣收到的,但是可以抓包,看看發(fā)送了什么請(qǐng)求。
<script src="jQuery.js"></script>
<script>
$.ajax({
type:"post",
url:"https://leetcode.cn/",
data:"a=10&b=20",
success:function(body){
console.log(body);
},
error:function(){
console.log("error");
}
});
</script>
?抓包結(jié)果:
4、通過Java socket 構(gòu)造HTTP請(qǐng)求?
????????只要是某個(gè)編程語言,可以操作網(wǎng)絡(luò)【能夠進(jìn)行socket編程】就一定可以構(gòu)造HTTP請(qǐng)求【往一個(gè)tcp socket里寫一個(gè)符合http協(xié)議格式的字符串
postman
屬于一個(gè)專門用來構(gòu)造http請(qǐng)求的第三方工具,主要用來幫助我們進(jìn)行接口測(cè)試
postman下載、使用:
?記得注冊(cè)后使用
?創(chuàng)建一個(gè)你自己Workspaces
文章來源:http://www.zghlxwxcb.cn/news/detail-404995.html
?本期結(jié)束啦!?。∠缕谝娍﹡文章來源地址http://www.zghlxwxcb.cn/news/detail-404995.html
到了這里,關(guān)于計(jì)算機(jī)網(wǎng)絡(luò)——如何構(gòu)造HTTP請(qǐng)求的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!