前言php可以類比瀏覽器向SAPI發送HTTP請求,但是前提是需要安裝和使用HTTP擴充Ubuntu10.04安裝http擴充
安裝libcurl3-openssl-dev(前提安裝好pecl)
sudo apt-get install libcurl4-openssl-devsudo apt-get install libmagic-dev
安裝peclpecl是用來編譯php擴充源檔案的工具,該工具是在pear包中發布的,安裝方法:
sudo apt-get install php-pear
安裝phpize
sudo apt-get install php5-dev
安裝http擴充
sudo pecl install pecl_http
添加擴充完成之後,建立/etc/php5/conf.d/oauth.ini檔案,內容添加extension=http.so即可重啟php的運行環境
- 如果是apache的mod_php運行php,則需要重啟apache
- 如果是php5-fpm運行php,則需要重啟fpm
- 所以需要根據php實際的運行環境進行相應的選擇
使用http擴充類比樣本http1.php向http2.php發送http請求,傳送一個post參數,http2.php擷取post中指定的參數,並且返回http1.php
<?php// 1.構造發送請求的資料$url = "http://127.0.0.1:8999/http2.php";$http_header = array ("age" => 24 );$send_body = array ("name" => "wangzhengyi" );// 2.執行個體化http類,發送post請求$http_request = new HttpRequest ();$http_request->setUrl($url);$http_request->addHeaders ( $http_header );$http_request->setMethod ( HTTP_METH_POST );$http_request->setPostFields ( $send_body );$http_request->send ();// 列印返回的結果print_r ( $http_request->getResponseMessage ()->body );?>
http2.php
<?php//擷取header頭部數組,apache專有函數$headers_array = getallheaders ();$age = $headers_array["age"];$name = isset($_POST["name"])?$_POST["name"]:NULL;if(empty($name)){echo "http請求發送失敗!";}else {echo $name." is a ".$age." programmer";}?>
顯示結果:參考連結php官網手冊安裝http擴充