arhitector / http-curl-client
PHP-HTTP的cURL客户端
1.3.0
2016-03-25 16:17 UTC
Requires
- php: >=5.5
- ext-curl: *
- php-http/httplug: ^1.0
- php-http/message-factory: ^1.0
Requires (Dev)
- guzzlehttp/psr7: ^1.0
- php-http/adapter-integration-tests: dev-master#836cdff8294174cceeae54601ab4079c309227b7
- php-http/discovery: ~0.8.0
- php-http/message: ^1.0
- phpunit/phpunit: ^4.8
- puli/composer-plugin: ^1.0
- zendframework/zend-diactoros: ^1.0
Provides
README
发送PSR-7请求的客户端。cURL客户端使用cURL PHP扩展,必须在您的php.ini
中激活。
与https://github.com/php-http/curl-client的不同之处
- 支持自定义方法,例如"MOVE","COPY","PROPFIND","MKCOL"等。(实际应用于WebDav操作)
- 支持大体的传输(上传和下载)。
- 完全支持原生流过滤器,例如'zlib.deflate'等。
- 修复了异步请求中的队列问题。
- 在流大小不精确的情况下不会导致服务器挂起。
- 更友好的API。
- 支持继承。
- 可以使用选项"CURLOPT_READFUNCTION"和"CURLOPT_WRITEFUNCTION"。
- 支持原生选项"CURLOPT_FOLLOWLOCATION"。(如果您需要支持带有重定向的cookie,请使用"CURLOPT_COOKIEJAR"和"CURLOPT_COOKIEFILE")
- 支持发送"PSR-7 Response"。
- 更正确地支持"Expect"头。
安装
通过Composer
$ composer require arhitector/http-curl-client:~1.3
快速入门
例如与Zend/Diactoros一起使用
use Http\Message\MessageFactory\DiactorosMessageFactory; use Http\Message\StreamFactory\DiactorosStreamFactory; $client = new Mackey\Http\Client\Curl\Client(new DiactorosMessageFactory(), new DiactorosStreamFactory(), [ // array, set default curl options, if you need CURLOPT_SSL_VERIFYPEER => false ]);
发送请求
$request = new Zend\Diactoros\Request('<url>', 'GET'); $response = $client->sendRequest($request, [ // curl options for 1 request, if you need CURLOPT_FOLLOWLOCATION => true ]);
发送异步请求
$request = new Zend\Diactoros\Request('<url>', 'GET'); $promise = $client->sendAsyncRequest($request); $promise->then( function (ResponseInterface $response) { // The success callback return $response; }, function (\Exception $exception) { // The failure callback throw $exception; } ); // other request // $promise = $client->sendAsyncRequest($request); try { $response = $promise->wait(); } catch (\Exception $exception) { echo $exception->getMessage(); }
发送响应
// example just send file in output $stream = new \Zend\Diactoros\Stream('file/to/send.txt'); $response = new \Zend\Diactoros\Response($stream, 200); $client->sendResponse($response); // or send for download $response = $response->withHeader('Content-Description', 'File Transfer') ->withHeader('Content-Type', 'application/octet-stream') ->withHeader('Content-Disposition', 'attachment; filename=filename.txt') ->withHeader('Content-Transfer-Encoding', 'binary'); $client->sendResponse($response);
文档
请参阅官方文档。
测试
$ composer test
贡献
请参阅CONTRIBUTING和CONDUCT以获取详细信息。
安全
如果您发现任何与安全相关的问题,请通过[email protected]联系我们。
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。