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目录中的示例代码