YurunHttp 是開源的 PHP HTTP 類庫,支持鏈式操做,簡單易用。php
支持全部常見的 GET、POST、PUT、DELETE、UPDATE 等請求方式,支持上傳下載、設置和讀取 header、Cookie、請求參數、失敗重試、限速、代理、證書等。html
3.x 版完美支持 Curl、Swoole 協程。git
咱們有完善的在線技術文檔:doc.yurunsoft.com/YurunHttpgithub
API 文檔:apidoc.gitee.com/yurunsoft/Y…json
Gitee:gitee.com/yurunsoft/Y…api
Github:github.com/Yurunsoft/Y…cookie
git倉庫中test目錄裏是示例代碼!composer
新增:性能
新增 CookieManager,用於管理一個實例下的會話。如今同一個HttpRequest類實例,會自動管理 Cookie。測試
增長測試用例(PHP5.4 - PHP7.3)、示例代碼
優化:
如今只有狀態碼爲30一、30二、303,才更改重定向請求方法爲 GET
優化 StatusCode 類
Swoole 重定向地址的 host、port、scheme 與上一個地址保持一致的話,複用 $client
同一個 HttpRequest 對象重複請求時,Curl 資源再也不從新 init
Uri->getPort() 再也不根據協議自動返回缺省端口 新增 Uri::getServerPort() 方法獲取端口,支持獲取缺省
Uri::getDomain() 方法改成靜態方法
優化 close()、__destruct()
Curl CURLOPT_COOKIEJAR 默認值改成 php://memory,再也不寫入文件
優化 Curl header 處理性能
修復:
修復 Swoole Handler Host 不帶端口號問題 Composer 本項目能夠使用composer安裝,遵循psr-4自動加載規則,在你的 composer.json 中加入下面的內容
{
"require": {
"yurunsoft/yurun-http": "~3.1"
}
}
複製代碼
而後執行 composer update
安裝。
以後你即可以使用 include "vendor/autoload.php";
來自動加載類。(ps:不要忘了namespace)
簡單調用
<?php
use Yurun\Util\HttpRequest;
$http = new HttpRequest;
$response = $http->ua('YurunHttp')
->get('http://www.baidu.com');
echo 'html:', PHP_EOL, $response->body();
複製代碼
PSR-7 請求構建
<?php
use Yurun\Util\YurunHttp\Http\Request;
use Yurun\Util\YurunHttp;
$url = 'http://www.baidu.com';
// 構造方法定義:__construct($uri = null, array $headers = [], $body = '', $method = RequestMethod::GET, $version = '1.1', array $server = [], array $cookies = [], array $files = [])
$request = new Request($url);
// 發送請求並獲取結果
$response = YurunHttp::send($request);
var_dump($response);
複製代碼
Swoole 協程模式
<?php
use Yurun\Util\YurunHttp;
use Yurun\Util\HttpRequest;
// 設置默認請求處理器爲 Swoole
YurunHttp::setDefaultHandler('Yurun\Util\YurunHttp\Handler\Swoole'); // php 5.4
// YurunHttp::setDefaultHandler(\Yurun\Util\YurunHttp\Handler\Swoole::class); // php 5.5+
// Swoole 處理器必須在協程中調用
go('test');
function test() {
$http = new HttpRequest;
$response = $http->get('http://www.baidu.com');
echo 'html:', PHP_EOL, $response->body();
}
複製代碼
具體詳見examples目錄中的示例代碼