arhitector/http-curl-client

PHP-HTTP的cURL客户端

1.3.0 2016-03-25 16:17 UTC

This package is auto-updated.

Last update: 2024-09-13 02:08:24 UTC


README

Latest Version Software License Build Status Code Coverage Quality Score Total Downloads

发送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

贡献

请参阅CONTRIBUTINGCONDUCT以获取详细信息。

安全

如果您发现任何与安全相关的问题,请通过[email protected]联系我们。

许可证

MIT许可证(MIT)。有关更多信息,请参阅许可证文件