balpom / universal-downloader
下载指定URI(或文件)的内容。
v1.4.1
2024-05-28 15:44 UTC
Requires
- php: >=8.1
- psr/http-client: ^1.0
- psr/http-factory: ^1.0
- psr/http-message: ^2.0
Requires (Dev)
- guzzlehttp/guzzle: ^7.8
- nyholm/psr7: ^1.7.0
- webclient/webclient: ^1.0
README
提供指定URI(或文件位置)上内容下载的简单接口及其简单实现。
此下载器对于网站解析、处理REST API以及其他通过HTTP协议处理WEB资源的工作非常有用。本包版本包含了一个用于任何PSR-18 HTTP客户端的接口实现。计划实现一个通过Selenium WebDriver工作的实现。
要求
- PHP >= 8.1
安装
使用composer(推荐)
composer require balpom/universal-downloader
简单下载器使用示例
$downloader = new \Balpom\UniversalDownloader\SimpleDownloader(); $downloader = $downloader->get('https://ipmy.ru/ip'); echo $downloader->content() . PHP_EOL; // Must be your IP.
PSR18下载器使用示例
PSR18下载器需要实现ResponseFactoryInterface、StreamFactoryInterface和UriFactoryInterface接口的对象,这些接口在PSR-17规范中定义。实现所有这些接口的库(一站式解决方案)是Nyholm/psr7 - 将使用它。
PSR18下载器实现还需要实现PSR-18规范中定义的ClientInterface的HTTP客户端。例如,将使用phpwebclient/webclient和guzzle/guzzle。
安装第三方包
composer require nyholm/psr7
composer require webclient/webclient
composer require guzzlehttp/guzzle
基于Webclient创建下载器。
$factory = new \Nyholm\Psr7\Factory\Psr17Factory(); $client = new \Webclient\Http\Webclient($factory, $factory); // Psr17Factories(RequestFactoryInterface $request, StreamFactoryInterface $stream, UriFactoryInterface $uri) $factories = new \Balpom\UniversalDownloader\Factory\Psr17Factories($factory, $factory, $factory, $factory); $downloader = new \Balpom\UniversalDownloader\Downloader($client, $factories);
基于GuzzleHttp创建下载器。
$client = new \GuzzleHttp\Client(); $factory = new \Nyholm\Psr7\Factory\Psr17Factory(); $factories = new \Balpom\Downloader\Factory\Psr17Factories($factory, $factory, $factory, $factory); // In my realisation Psr17Factory factories required. // You may make your own realisation, bases on GuzzleHttp options (it has own Psr17Factory). $downloader = new \Balpom\UniversalDownloader\Downloader($client, $factories);
下载URI
出于测试目的,将向网站https://ipmy.ru发送请求。
$downloader = $downloader->get('http://ipmy.ru/ip'); $result = $downloader->result(); echo $result->code(); echo PHP_EOL; // Must be 200. echo $result->content(); echo PHP_EOL; // Must be your IP. echo $result->mime(); echo PHP_EOL; // Must be "text/html".
更详细的示例可以在“tests/test-psr18.php”文件中找到 - 只需运行它
php tests/test-psr18.php
许可证
MIT许可证 看看LICENSE.MD