YurunHttp 是開源的 PHP HTTP 類庫,支持鏈式操做,簡單易用。php
支持全部常見的 GET、POST、PUT、DELETE、UPDATE 等請求方式,支持上傳下載、設置和讀取 header、Cookie、請求參數、失敗重試、限速、代理、證書等。html
3.0 版完美支持Curl、Swoole 協程;3.2 版支持 Swoole WebSocket 客戶端。git
API 文檔:https://apidoc.gitee.com/yuru...github
Gitee:https://gitee.com/yurunsoft/Y...web
Github:https://github.com/Yurunsoft/...json
git倉庫中examples目錄裏是示例代碼!api
WebSocket Client 僅限用於 Swoole 協程環境。cookie
YurunHttp::setDefaultHandler(\Yurun\Util\YurunHttp\Handler\Swoole::class); go(function(){ $url = 'ws://127.0.0.1:1234/'; $http = new HttpRequest; $client = $http->websocket($url); if(!$client->isConnected()) { throw new \RuntimeException('Connect failed'); } $client->send('data'); $recv = $client->recv(); var_dump('recv:', $recv); $client->close(); });
本項目能夠使用composer安裝,遵循psr-4自動加載規則,在你的 composer.json 中加入下面的內容composer
{ "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(); }
YurunHttp::setDefaultHandler(\Yurun\Util\YurunHttp\Handler\Swoole::class); go(function(){ $url = 'ws://127.0.0.1:1234/'; $http = new HttpRequest; $client = $http->websocket($url); if(!$client->isConnected()) { throw new \RuntimeException('Connect failed'); } $client->send('data'); $recv = $client->recv(); var_dump('recv:', $recv); $client->close(); });
具體詳見examples目錄中的示例代碼