php api 教程,PHP用1個函數實現post請求?
引言
前天的文章,我們說到了如何高效的下載網絡資源,對于小體積的文件。可以便捷的使用 file_put_contents() 進行請求。與之配對的函數 file_get_contents() 則是讀取資源。
今天我們討論一下,有沒有一種可能,使用一個函數,就可以給服務器發送post請求的數據呢?
學習時間上一段中我們已經提示了,有一個函數可以用于讀取網絡資源,也就是間接的發起網絡請求。默認 file_get_contents()是使用 GET 請求,如果是POST請求按道理也應該做的來。不過要怎么寫呢?
file_get_contents() 函數是用來將文件的內容讀入到一個字符串中的首選方法。如果操作系統支持還會使用內存映射技術來增強性能。
其參數形式如下:
string file_get_contents( string $filename[, bool $use_include_path = false[, resource $context[, int $offset = -1[, int $maxlen]]]] )
復雜的功能,我們需要組裝后面的參數即可。我們需要使用流操作的上下文 context,傳入該函數。
首先構造請求的參數,也就是鍵值對,這里需要使用 & 進行多參數連接:
$postdata = http_build_query( array( 'name' => 'joe', 'age' => '13' ) );
接著構造請求結構體:
$opts = array('http' => array( 'method' => 'POST', 'header' => 'Content-Type: application/x-www-form-urlencoded', 'content' => $postdata ) );
最重要的一步,創建基于流的上下文,使用
$context = stream_context_create($opts);
寫到這里就“萬事俱備只欠東風”了。我們隆重地清楚主旨函數處理這些參數:
$result = file_get_contents('http://example.com/submit.php', false, $context);
之后結果,或者錯誤內容,就會輸出到 $result 對象。使用 false 判斷,或者使用已知的接口返回數據類型,進一步處理。
深度定制上一節的內容并沒有考慮網絡超時,接口授權,等等情形。本節我們說一個復雜度高一些的,要求處理一個https請求,并配置了 basic auth 的 url,并使用 post 上傳數據。
首先還是裁剪請求體:
$opts = array('http' => array( 'method' => 'POST', 'header' => "Content-Type: text/xml\r\n.Authorization: Basic ".base64_encode("$https_user:$https_password")."\r\n", 'content' => $body, 'timeout' => 60 ) );
注意我們在請求上添加了 header,這是根據目標 url 的要求添加的。$body 就是上一節中的 $postdata 結構類型。
接著創建流上下文:
$context = stream_context_create($opts);
最后調用函數:
$url = 'https://'.$https_server;
$result = file_get_contents($url, false, $context, -1, 40000);
寫在最后通過上面兩個細節的函數處理,大家是不是對 file_get_contents() 有了更加深入的看法,原來這家伙還可以這么用,真是開了眼界!
Happy coding :_)
我是 @程序員小助手 ,持續分享編程知識,歡迎關注。
api用什么框架?
可以用Lumen 一個由 Laravel 組件搭建而成的微框架
如何高效迅速掌握PHP知識架構和積累開發經驗?
身為一個資深開發,我認為第一階段1-2年的PHPer知道如何使用工具、項目版本如何控制、接觸并能夠使用YII/tp/laravel等框架完成項目等等
第二階段2-3年的PHPer除了寫代碼還需要熱衷于學習各種技術實現、不僅對項目熟悉,還要能解決性能問題。只有深入學習PHP優化,Swoole接口,微服務,Mysql底層優化等,才能保持核心競爭力,擁有一份不錯的薪資!
第三階段4-5年的PHPer技術體系需要逐漸往大型層次進階, 有效、高速的處理從很小到非常大的項目管理,隨著我們的業務量越來越大和越高并發,分布式緩存、RPC、API架構設計等技術都必將掌握!
能具備以上技術能力絕對可以從一個Coder逐步走向CTO或是架構師,那么比較迷茫跟能力不足的程序員該怎么去學習呢?我特地為大家準備了一套精品PHP架構師進階路線,保證你學了以后保證薪資上升一個臺階。需要可關注本頭條號,并且發送私信:PHP
php如何與攝像頭實現接口?
php是肯定不能和客戶端攝像頭通訊的吧。
除非借助別的東東 因為PHP是一種服務端技術呀php的基本介紹?
PHP原始為Personal Home Page的縮寫,現已正式更名為Hypertext Preprocesso,中文名稱為超文本預處理器。
是一種通用開源腳本語言,PHP是在服務器端執行的腳本語言,主要適用于Web開發領域,隨著移動應用的興起,PHP也可用于開發API接口。
以上就是關于php api 教程以及PHP用1個函數實現post請求的相關回答,有更多疑問可以加微。