berlioz / http-client
Berlioz HTTP 客户端是一个PHP库,用于请求具有连续导航的HTTP服务器,包括cookies、session等... 实现了PSR-18(HTTP客户端)、PSR-7(HTTP消息接口)和PSR-17(HTTP工厂)标准。
Requires
- php: ^8.0
- ext-mbstring: *
- ext-zlib: *
- berlioz/http-message: ^2.1
- elgigi/har-parser: ^1.0
- psr/http-client: ^1.0
- psr/log: ^1.0 || ^2.0 || ^3.0
Requires (Dev)
- phpunit/phpunit: ^9.5
- symfony/process: ^5.0
Suggests
- ext-curl: To use CURL adapter
- berlioz/html-selector: To query HTML result like jQuery in JavaScript.
Provides
This package is auto-updated.
Last update: 2024-09-19 08:29:09 UTC
README
Berlioz HTTP 客户端是一个PHP库,用于请求具有连续导航的HTTP服务器,包括cookies、session等... 实现了PSR-18(HTTP客户端)、PSR-7(HTTP消息接口)和PSR-17(HTTP工厂)标准。
安装
Composer
您可以使用Composer安装
$ composer require berlioz/http-client
依赖项
- PHP ^8.0
- PHP库
- curl
- mbstring
- zlib
- 包
- berlioz/http-message
- elgigi/har-parser
- psr/http-client
- psr/log
用法
请求
使用 RequestInterface
您可以使用实现RequestInterface
接口(PSR-7)的请求对象来构建自己的请求对象。
use Berlioz\Http\Client\Client; use Berlioz\Http\Message\Request; /** @var \Psr\Http\Message\RequestInterface $request */ $request = new Request(...); $client = new Client(); $response = $client->sendRequest($request); print $response->getBody();
Get/Post/Patch/Put/Delete/Options/Head/Connect/Trace
方法可用于使用定义的HTTP方法进行请求
Client::get(...)
Client::post(...)
Client::patch(...)
Client::put(...)
Client::delete(...)
Client::options(...)
Client::head(...)
Client::connect(...)
Client::trace(...)
使用Client::get()
的示例
use Berlioz\Http\Client\Client; $client = new Client(); $response = $client->get('https://getberlioz.com'); print $response->getBody();
您还可以将HTTP方法作为参数传递给Client::request(...)
方法
use Berlioz\Http\Client\Client; $client = new Client(); $response = $client->request('get', 'https://getberlioz.com'); print $response->getBody();
每个方法都接受一个包含$options
参数的选项数组。选项列表
- baseUri(字符串):如果请求中没有提供,则为URI的基
- followLocation(布尔值):跟随重定向(默认:true)
- followLocationLimit(整数):限制要跟随的位置
- sleepTime(整数):请求之间的睡眠时间(毫秒)(默认:0)
- logFile(字符串):日志文件名(仅文件名,不是路径)
- exceptions(布尔值):错误时抛出异常(默认:true)
- cookies(null|false|CookiesManager):NULL:使用默认cookie管理器;FALSE:不使用cookies;要使用的CookieManager对象
- callback(可调用):请求后的回调
- headers(数组):默认头信息
传递给参数的选项将替换客户端的默认选项。
会话
会话可以通过方法Client::getSession()
访问。
历史记录
浏览历史记录保存在会话中。如果序列化对象Session
,则历史记录将保留。
方法Session::getHistory()
返回一个History
对象
use Berlioz\Http\Client\Client; $client = new Client(); $history = $client->getSession()->getHistory();
Cookies
有一个cookie管理器可用于管理会话和请求之间的cookies。该管理器通过Session::getCookies()
方法提供。
如果序列化对象Session
,则cookies将保留。
HAR文件
会话的HAR文件可以通过方法Session::getHar()
访问。
如果序列化对象Session
,则HAR将保留。
请参阅
适配器
用法
库默认使用的适配器是CurlAdapter
(如果安装了CURL扩展),否则使用StreamAdapter
。
您可以通过客户端构造函数的adapter
参数指定适配器
use Berlioz\Http\Client\Client; use Berlioz\Http\Client\Adapter; $client = new Client(adapter: new Adapter\CurlAdapter(), adapter: new Adapter\StreamAdapter());
第一个指定的适配器是默认适配器。
如果您想强制对请求使用一个适配器,可以在请求选项中传递其名称
use Berlioz\Http\Client\Client; use Berlioz\Http\Client\Adapter; $client = new Client(adapter: new Adapter\CurlAdapter(), adapter: new Adapter\StreamAdapter()); $client->get('https://getberlioz.com', options: ['adapter' => 'stream']);
列表
适配器列表
- curl:
Berlioz\Http\Client\Adapter\CurlAdapter
- 流:
Berlioz\Http\Client\Adapter\StreamAdapter
- Har:
Berlioz\Http\Client\Adapter\HarAdapter
HarAdapter
HarAdapter
专门用于模拟导航,例如从桌面浏览器等来源。
这对于单元测试非常有用。您只需将清理后的HAR文件存储到您的存储库中,即可启动带有模拟HTTP对话的测试。
use Berlioz\Http\Client\Client; use Berlioz\Http\Client\Adapter\HarAdapter; use ElGigi\HarParser\Parser; // Create HAR object from library `elgigi/har-parser` $har = (new Parser())->parse('/path/of/my/file.har', contentIsFile: true); $client = new Client(adapter: new HarAdapter(har: $har)); $client->get('https://getberlioz.com'); // Get response from HAR object, without making an HTTP request
Har适配器接受一个名为strict
的选项(默认:false
),以强制导航方式。
创建适配器
您可以为您的项目创建一个适配器。您必须实现Berlioz\Http\Client\Adapter\AdapterInterface
接口。