YurunHttp v3.4.0 发布,支持 Http2 全双工通信
YurunHttp 是开源的 PHP HTTP 类库,支持链式操作,简单易用。 支持所有常见的 GET、POST、PUT、DELETE、UPDATE 等请求方式,支持 Http2、WebSocket、浏览器级别 Cookies 管理、上传下载、设置和读取 header、Cookie、请求参数、失败重试、限速、代理、证书等。 git 仓库中 examples 目录里是示例代码! 更新日志(v3.4.0): 新增 新增支持全双工的 Http2 客户端 新增 Attributes 属性的常量定义类,所有 Attribute 操作使用该类中的常量作为名称 Swoole Handler 引入连接管理器 新增默认缺省的默认 UserAgent (可在每个请求中指定,或设置全局Attribute::USER_AGENT用以代替默认的 UA) 支持发送 Http2 请求不调用 recv() 优化 Request对象中的Attribute缺省情况下,会从YurunHttp类中获取 重构 Swoole Handler Http2 全双工用法 该用法仅支持 Swoole $uri = new Uri('https://wiki.swoole.com/'); // 客户端初始化和连接 $client = new \Yurun\Util\YurunHttp\Http2\SwooleClient($uri->getHost(), Uri::getServerPort($uri), 'https' === $uri->getScheme()); $client->connect(); // 请求构建 $httpRequest = new HttpRequest; $request = $httpRequest->header('aaa', 'bbb')->buildRequest($uri, [ 'date' => $i, ], 'POST', 'json'); for($i = 0; $i < 10; ++$i) { go(function() use($client, $request){ // 发送(支持在多个协程执行) $streamId = $client->send($request); var_dump('send:' . $streamId); // 接收(支持在多个协程执行) $response = $client->recv($streamId, 3); $content = $response->body(); var_dump($response); }); } 具体用法请看examples/http2Client.php 重大版本更新日志 每个小版本的更新日志请移步到 Release 查看 v3.4.0 新增支持Http2全双工用法 v3.3.0 新增支持Http2兼容用法 v3.2.0 新增支持Swoole WebSocket客户端 v3.1.0 引入浏览器级别Cookies管理 v3.0.0 新增支持Swoole协程 v2.0.0 黑历史,不告诉你 v1.3.1 支持Composer v1.0-1.3 初期版本迭代 Composer 本项目可以使用composer安装,遵循psr-4自动加载规则,在你的composer.json中加入下面的内容 { "require": { "yurunsoft/yurun-http": "^3.4.0" } } 然后执行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(); } WebSocket Client 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目录中的示例代码 相关地址: API 文档:https://apidoc.gitee.com/yurunsoft/YurunHttp Gitee:https://gitee.com/yurunsoft/YurunHttp Github:https://github.com/Yurunsoft/YurunHttp