午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁技術(shù)文章
文章詳情頁

PHP 請(qǐng)求上下文相關(guān)總結(jié)

瀏覽:20日期:2022-09-07 15:47:23

我們首先來了解下什么是上下文。在我們寫文章,寫句子時(shí),都會(huì)考慮一個(gè)觀點(diǎn)或者內(nèi)容的前后邏輯,轉(zhuǎn)承啟合,而在這個(gè)觀點(diǎn)前后的內(nèi)容就可以看成是它的上下文內(nèi)容。它包含了語境的意味在里面,其實(shí)代碼世界中的上下文也是一樣的意思,本身 Context 這個(gè)單詞就是環(huán)境、背景的意思。

接下來,我們來說說請(qǐng)求上下文又是什么呢?比如說我們要使用PHP來請(qǐng)求一個(gè)鏈接地址,通常我們會(huì)使用 curl 來進(jìn)行請(qǐng)求,但是 curl 的配置其實(shí)是比較復(fù)雜的,所以我們?cè)诤?jiǎn)單使用的情況下會(huì)使用 file_get_contents() 這種函數(shù)來快捷地請(qǐng)求鏈接。不過,可能很多人并不知道或者說沒怎么使用過它的上下文參數(shù)。其實(shí),使用了上下文參數(shù)之后,file_get_contents() 不僅可以提交 POST 請(qǐng)求,還可以定義各種請(qǐng)求頭內(nèi)容。這些東西,就是一個(gè)請(qǐng)求的上下文,也就是它的執(zhí)行環(huán)境和背景。

首先,我們定義一個(gè)服務(wù)端,在這里只是輸出 _GET 和 和_POST 里面的內(nèi)容。同時(shí),我們還打印了 $_SERVER 來看看請(qǐng)求頭是否獲取到了。

print_r($_SERVER);echo ’GET INFO’, PHP_EOL;foreach ($_GET as $k => $v) { echo $k, ’: ’, $v, PHP_EOL;}echo PHP_EOL,PHP_EOL;echo ’POST INFO’, PHP_EOL;foreach ($_POST as $k => $v) { echo $k, ’: ’, $v, PHP_EOL;}

接下來,在我們的測(cè)試代碼中,使用 file_get_contents() 來進(jìn)行 POST 提交。

$postdata = http_build_query( [’var1’ => ’some content’,’var2’ => ’doh’, ]);$opts = [ ’http’ => [’method’ => ’POST’,’header’ => ’Content-type: application/x-www-form-urlencoded’,’content’ => $postdata, ],];$context = stream_context_create($opts);$result = file_get_contents(’http://localhost:8088/?a=1’, false, $context);print_r($result);var_dump($http_response_header);

在這里,我們只是用到了 stream_context_create() ,就能夠輕松地創(chuàng)建一個(gè)請(qǐng)求的上下文環(huán)境了。stream_context_create() 是創(chuàng)建上下文環(huán)境的函數(shù),它接收的參數(shù)是一個(gè)選項(xiàng)數(shù)組,里面用于定義當(dāng)前請(qǐng)求的相關(guān)選項(xiàng)。注意,我們這里其實(shí)定義的是 http/https 相關(guān)的選項(xiàng),它還可以定義 ftp 、 socket 等相關(guān)的請(qǐng)求協(xié)議選項(xiàng)。

在使用 file_get_contents() 函數(shù)請(qǐng)求遠(yuǎn)程地址后,我們可以在 $http_response_header 變量內(nèi)獲取到請(qǐng)求返回的響應(yīng)頭信息。而且這個(gè)變量是會(huì)定義在當(dāng)前的局部作用域下,不用擔(dān)心全局作用域污染的問題。

非常簡(jiǎn)單的方式就可以實(shí)現(xiàn) POST 請(qǐng)求了吧,另外我們還可以使用 fopen() 函數(shù)來實(shí)現(xiàn)類似的效果,不過獲取 body 和響應(yīng)應(yīng)信息時(shí)的方式就不同了。

$url = 'http://localhost:8088/?a=1';$opts = [ ’http’ => [’method’ => ’GET’,’max_redirects’ => ’0’,’ignore_errors’ => ’1’, ],];$context = stream_context_create($opts);$stream = fopen($url, ’r’, false, $context);// 返回響應(yīng)頭var_dump(stream_get_meta_data($stream));// 返回內(nèi)容var_dump(stream_get_contents($stream));fclose($stream);

在這段代碼中,我們使用 stream_get_meta_data() 函數(shù)來獲得響應(yīng)頭,使用 stream_get_contents() 來獲得響應(yīng)的內(nèi)容(body)。這樣其實(shí)就真的和 curl 的效果差不多了,而且最主要的是,當(dāng)前這種寫法更簡(jiǎn)單方便。

從上面的代碼中我們可以看出,這種上下文相關(guān)的函數(shù)都是 Stream 類型的函數(shù),也就是流函數(shù)。它們是專門用來處理各種數(shù)據(jù)的,包括但不限于文件中的、網(wǎng)絡(luò)上的、壓縮文件以及其他一些操作的數(shù)據(jù)。在將來的學(xué)習(xí)中,我們還會(huì)接觸到其它的內(nèi)容。今天的學(xué)習(xí),其實(shí)是流的網(wǎng)絡(luò)數(shù)據(jù)處理中的一小部分內(nèi)容,大家先消化消化吧!

測(cè)試代碼: github.com/zhangyue050…

以上就是PHP 請(qǐng)求上下文相關(guān)總結(jié)的詳細(xì)內(nèi)容,更多關(guān)于PHP 請(qǐng)求上下文的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: PHP
相關(guān)文章:
主站蜘蛛池模板: 亚洲自拍三区 | 久久久精品一区二区 | 欧美激情片在线观看 | 日本久久久久久 | 亚洲激情网站 | 一区二区三区国产在线观看 | 国产精品久久久免费 | 欧美日韩a v | 黑人と日本人の交わりビデオ | 国产夫绿帽单男3p精品视频 | 亚洲视频在线免费 | 999av| 欧美黄色录像片 | 最新国产精品 | 黄网在线观看视频 | 欧美成人精品欧美一级乱黄 | 久久免费看片 | 成人午夜在线视频 | 日本欧美国产在线 | 中文字幕av观看 | 不卡av网 | www.天天色 | 欧美国产另类 | 国产精品成人久久久久 | 日韩欧美在线看 | 亚洲黄色免费网站 | www视频在线观看 | 欧美激情综合五月色丁香 | 永久黄网站 | 日韩网站免费观看 | 国产欧美一区二区三区视频在线观看 | 亚洲成网站 | 免费观看的av网站 | 欧美午夜精品久久久久久人妖 | 午夜精品一区二区三区在线播放 | 日本中文字幕有码 | 久久99久久99精品免观看软件 | 污视频网站免费看 | 在线你懂得 | 成人在线毛片 | 99视频在线免费观看 |