摘要:發(fā)送請(qǐng)求的方式那么這里整理一下除了使用外發(fā)送請(qǐng)求的方式。以一個(gè)請(qǐng)求為例關(guān)于的介紹文章方式使用套接字建立連接,拼接協(xié)議字符串發(fā)送數(shù)據(jù)進(jìn)行請(qǐng)求。一個(gè)方式的例子本文介紹了發(fā)送請(qǐng)求的幾種不同的方式。
(原文地址:https://blog.tanteng.me/2017/...
副標(biāo)題:cURL庫(kù)和Guzzle HTTP客戶端區(qū)別
PHP 開發(fā)中我們常用 cURL 方式封裝 HTTP 請(qǐng)求,什么是 cURL?
cURL 是一個(gè)用來(lái)傳輸數(shù)據(jù)的工具,支持多種協(xié)議,如在 Linux 下用 curl 命令行可以發(fā)送各種 HTTP 請(qǐng)求。PHP 的 cURL 是一個(gè)底層的庫(kù),它能根據(jù)不同協(xié)議跟各種服務(wù)器通訊,HTTP 協(xié)議是其中一種。
現(xiàn)代化的 PHP 開發(fā)框架中經(jīng)常會(huì)用到一個(gè)包,叫做 GuzzleHttp,它是一個(gè) HTTP 客戶端,也可以用來(lái)發(fā)送各種 HTTP 請(qǐng)求,那么它的實(shí)現(xiàn)原理是什么,與 cURL 有何不同呢?
Does Guzzle require cURL?No. Guzzle can use any HTTP handler to send requests. This means that Guzzle can be used with cURL, PHP’s stream wrapper, sockets, and non-blocking libraries like React. You just need to configure an HTTP handler to use a different method of sending requests.
這是 GuzzleHttp 文檔 FAQ 中的一個(gè) Question,可見 GuzzleHttp 并不依賴 cURL 庫(kù),而支持多種發(fā)送 HTTP 請(qǐng)求的方式。
PHP 發(fā)送 HTTP 請(qǐng)求的方式那么這里整理一下除了使用 cURL 外 PHP 發(fā)送 HTTP 請(qǐng)求的方式。
1.cURL略過(guò)
2.stream流的方式stream_context_create 作用:創(chuàng)建并返回一個(gè)文本數(shù)據(jù)流并應(yīng)用各種選項(xiàng),可用于 fopen(), file_get_contents() 等過(guò)程的超時(shí)設(shè)置、代理服務(wù)器、請(qǐng)求方式、頭信息設(shè)置的特殊過(guò)程。
以一個(gè) POST 請(qǐng)求為例:
array( "method" => "POST", "header" => "Content-type: application/x-www-form-urlencoded", "content" => $postdata ) ); $context = stream_context_create($opts); $result = file_get_contents($url, false, $context); return $result; }
關(guān)于 PHP stream 的介紹文章:https://www.oschina.net/trans...
3.socket方式使用套接字建立連接,拼接 HTTP 協(xié)議字符串發(fā)送數(shù)據(jù)進(jìn)行 HTTP 請(qǐng)求。
一個(gè) GET 方式的例子:
"; } else { $out = "GET / HTTP/1.1 "; $out .= "Host: www.example.com "; $out .= "Connection: Close "; fwrite($fp, $out); while (!feof($fp)) { echo fgets($fp, 128); } fclose($fp); }
本文介紹了發(fā)送 HTTP 請(qǐng)求的幾種不同的方式。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/23293.html
摘要:比如域的頁(yè)面通過(guò)嵌入了一個(gè)域的頁(yè)面,可以通過(guò)以下方法實(shí)現(xiàn)和的通信通過(guò)跨域以上幾種都是雙向通信的,即兩個(gè),頁(yè)面與或是頁(yè)面與頁(yè)面之間的,下面說(shuō)幾種單項(xiàng)跨域的一般用來(lái)獲取數(shù)據(jù),因?yàn)橥ㄟ^(guò)標(biāo)簽引入的是不受同源策略的限制的。 跨域整理@(前端筆記) 跨域 只要協(xié)議、域名、端口有任何一個(gè)不同,都被當(dāng)作是不同的域。由于瀏覽器的同源策略,其限制之一是不能通過(guò)ajax的方法情趣請(qǐng)求不同源的文檔。第二個(gè)限制...
摘要:話說(shuō)當(dāng)下一共有種運(yùn)行模式,分別是和模塊模式。使用,全稱進(jìn)程管理器進(jìn)行管理。工作原理啟動(dòng)時(shí)載入進(jìn)程管理器進(jìn)程管理器自身初始化,啟動(dòng)多個(gè)解釋器進(jìn)程并等待來(lái)自的連接當(dāng)客戶端請(qǐng)求到達(dá)時(shí),進(jìn)程管理器選擇并連接到一個(gè)解釋器。 我們知道 workerman 程序需要在php-cli模式下運(yùn)行,也就是命令行模式,這塊我們有必要了解一下。 話說(shuō)PHP當(dāng)下一共有4種運(yùn)行模式,分別是CGI、FastCGI、...
摘要:函數(shù)打開遠(yuǎn)程文件失敗使用正則匹配標(biāo)題標(biāo)記將標(biāo)題標(biāo)記中的標(biāo)題字符取出退出循環(huán),結(jié)束遠(yuǎn)程文件讀取函數(shù)函數(shù)請(qǐng)求遠(yuǎn)程數(shù)據(jù)執(zhí)行命令行命令 總結(jié)了5種方法: 前三種都是php基本的文件操作函數(shù) curl()是php擴(kuò)展需要開啟,linux下需要安裝 exec()執(zhí)行的是linux命令行下的命令wget下載遠(yuǎn)程文件 其中wget命令在本地虛機(jī)測(cè)試請(qǐng)求http://www.baidu.com時(shí),沒(méi)...
摘要:在中最常用的幾種回調(diào)寫法如下匿名函數(shù)做為回調(diào)匿名函數(shù),也叫閉包函數(shù),允許臨時(shí)創(chuàng)建一個(gè)沒(méi)有指定名稱的函數(shù)。最經(jīng)常用作回調(diào)函數(shù)參數(shù)的值。匿名函數(shù)的回調(diào)經(jīng)常將其賦給一個(gè)變量或一個(gè)對(duì)象的屬性最終結(jié)果會(huì)輸出。 在workerman中會(huì)經(jīng)常使用,我們先寫一個(gè)回調(diào)函數(shù),當(dāng)某個(gè)行為被觸發(fā)后使用該函數(shù)處理相關(guān)邏輯。 在PHP中最常用的幾種回調(diào)寫法如下 匿名函數(shù)做為回調(diào) 匿名函數(shù)(Anonymous fu...
摘要:表單最原始的是如何通信的基本通信原理瀏覽器可以發(fā)出請(qǐng)求與接收響應(yīng),實(shí)現(xiàn)在頁(yè)面不刷新的情況下和服務(wù)端進(jìn)行數(shù)據(jù)交互。響應(yīng)的狀態(tài)為或者。 1、什么是瀏覽器的同源政策限制? 端口,域名,協(xié)議 ,只要一個(gè)不一樣就跨域 2、前后端如何通信? 常見通信的幾種方式 Ajax : 短連接Websocket : 長(zhǎng)連接,雙向的。CORS fetch()Form表單(最原始的) Ajax是如何通信的 ...
閱讀 3866·2021-11-22 11:59
閱讀 1083·2021-09-27 13:36
閱讀 4074·2021-09-24 09:47
閱讀 2430·2021-09-01 11:39
閱讀 1115·2021-08-31 09:37
閱讀 2464·2021-08-05 10:01
閱讀 1845·2019-08-30 15:55
閱讀 825·2019-08-30 15:54