主頁 > 知識(shí)庫 > PHP獲取HTTP body內(nèi)容的方法

PHP獲取HTTP body內(nèi)容的方法

熱門標(biāo)簽:地圖標(biāo)注怎么做商戶驗(yàn)證 海南外呼系統(tǒng)方案 兼職做地圖標(biāo)注好賺錢嗎 智能電銷語音機(jī)器人資訊 400 電話 辦理 蘇州外呼系統(tǒng)有效果嗎 亳州企業(yè)外呼系統(tǒng) 打開百度地圖標(biāo)注 山東電銷卡外呼系統(tǒng)原理是什么

有時(shí)候我們獲取數(shù)據(jù)時(shí)需要根據(jù)Header中的格式來解析,比如上傳一個(gè)json而不是一個(gè)文本。這里用到了 php輸入|輸出流 的概念。

PHP 提供了一些雜項(xiàng)輸入/輸出(IO)流,允許訪問 PHP 的輸入輸出流、標(biāo)準(zhǔn)輸入輸出和錯(cuò)誤描述符, 內(nèi)存中、磁盤備份的臨時(shí)文件流以及可以操作其他讀取寫入文件資源的過濾器。

本文涉及到了了,php://input,詳盡內(nèi)容請(qǐng)參閱官網(wǎng):點(diǎn)擊查看官網(wǎng)

php://input 是個(gè)可以訪問請(qǐng)求的原始數(shù)據(jù)的只讀流。 POST 請(qǐng)求的情況下,最好使用 php://input 來代替 $HTTP_RAW_POST_DATA,因?yàn)樗灰蕾囉谔囟ǖ?php.ini 指令。 而且,這樣的情況下 $HTTP_RAW_POST_DATA 默認(rèn)沒有填充, 比激活 always_populate_raw_post_data 潛在需要更少的內(nèi)存。 enctype="multipart/form-data" 的時(shí)候 php://input 是無效的。

模擬代碼

// server.php
switch($_SERVER['CONTENT_TYPE']){
 case 'application/json':
 // 這里通過輸入端來獲取數(shù)據(jù)
 $body = file_get_contents('php://input');
 echo '這是一個(gè)json:', $body;
 break;
 // ...
}
// client_web.php, 注意這里使用了 axios
// ...
service = axios.create({
 baseURL: 'mydomain',
 validateStatus:function(status){
 if(500 >= status) alert('server fails');
 }
});

// 發(fā)一個(gè)請(qǐng)求
service.post(url, {
 // ...
 headers: {'Content-Type':'application/json'},
 data:'{"code":100}'
 // ...
});

// 全局設(shè)置也沒問題
service.interceptors.request.use(function(config){
 // 這里設(shè)置請(qǐng)求頭
 config.headers['Content-Type'] = 'application/json';
 return config;
}, function(err){});

引申閱讀

以下為官方文檔小抄

PHP 輸入|輸出流分為: php://stdin, php://stdout 和 php://stderr

php://stdin、php://stdout 和 php://stderr 允許直接訪問 PHP 進(jìn)程相應(yīng)的輸入或者輸出流。 數(shù)據(jù)流引用了復(fù)制的文件描述符,所以如果你打開 php://stdin 并在之后關(guān)了它, 僅是關(guān)閉了復(fù)制品,真正被引用的 STDIN 并不受影響。 注意 PHP 在這方面的行為有很多 BUG 直到 PHP 5.2.1。 推薦你簡(jiǎn)單使用常量 STDIN、 STDOUT 和 STDERR 來代替手工打開這些封裝器。

其中 php://stdin 是只讀的, php://stdout 和 php://stderr 是只寫的。

php://output

php://output 是一個(gè)只寫的數(shù)據(jù)流, 允許你以 print 和 echo 一樣的方式 寫入到輸出緩沖區(qū)。

php://fd

php://fd 允許直接訪問指定的文件描述符。 例如 php://fd/3 引用了文件描述符 3。

php://memory 和 php://temp

php://memory 和 php://temp 是一個(gè)類似文件 包裝器的數(shù)據(jù)流,允許讀寫臨時(shí)數(shù)據(jù)。 兩者的唯一區(qū)別是 php://memory 總是把數(shù)據(jù)儲(chǔ)存在內(nèi)存中, 而 php://temp 會(huì)在內(nèi)存量達(dá)到預(yù)定義的限制后(默認(rèn)是 2MB)存入臨時(shí)文件中。 臨時(shí)文件位置的決定和 sys_get_temp_dir() 的方式一致。

php://temp 的內(nèi)存限制可通過添加 /maxmemory:NN 來控制,NN 是以字節(jié)為單位、保留在內(nèi)存的最大數(shù)據(jù)量,超過則使用臨時(shí)文件。

php://filter

php://filter 是一種元封裝器, 設(shè)計(jì)用于數(shù)據(jù)流打開時(shí)的篩選過濾應(yīng)用。 這對(duì)于一體式(all-in-one)的文件函數(shù)非常有用,類似 readfile()、 file() 和 file_get_contents(), 在數(shù)據(jù)流內(nèi)容讀取之前沒有機(jī)會(huì)應(yīng)用其他過濾器。

php://filter 目標(biāo)使用以下的參數(shù)作為它路徑的一部分。 復(fù)合過濾鏈能夠在一個(gè)路徑上指定。詳細(xì)使用這些參數(shù)可以參考具體范例。

以上這篇PHP獲取HTTP body內(nèi)容的方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • PHP http請(qǐng)求超時(shí)問題解決方案
  • AngularJs的$http發(fā)送POST請(qǐng)求,php無法接收Post的數(shù)據(jù)問題及解決方案
  • PHP使用Http Post請(qǐng)求發(fā)送Json對(duì)象數(shù)據(jù)代碼解析
  • PHP利用curl發(fā)送HTTP請(qǐng)求的實(shí)例代碼
  • php如何獲取Http請(qǐng)求
  • PHP swoole中http_server的配置與使用方法實(shí)例分析
  • PHP的HTTP客戶端Guzzle簡(jiǎn)單使用方法分析
  • 對(duì)php 判斷http還是https,以及獲得當(dāng)前url的方法詳解
  • PHP實(shí)現(xiàn)模擬http請(qǐng)求的方法分析
  • HTTP頭隱藏PHP版本號(hào)實(shí)現(xiàn)過程解析

標(biāo)簽:萊蕪 綏化 呼倫貝爾 紹興 溫州 清遠(yuǎn) 金華 安康

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PHP獲取HTTP body內(nèi)容的方法》,本文關(guān)鍵詞  PHP,獲取,HTTP,body,內(nèi)容,的,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《PHP獲取HTTP body內(nèi)容的方法》相關(guān)的同類信息!
  • 本頁收集關(guān)于PHP獲取HTTP body內(nèi)容的方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 企业400电话

    智能AI客服机器人
    15000

    在线订购

    合计11份范本:公司章程+合伙协议+出资协议+合作协议+股权转让协议+增资扩股协议+股权激励+股东会决议+董事会决议

    推薦文章