lanzhi / php-coroutine-http-client
php coroutine http client
0.1
2018-05-03 13:06 UTC
Requires
- php: >=7.0
- guzzlehttp/psr7: ^1.4
- lanzhi/php-coroutine-socket: >=0.1
- psr/http-message: ^1.0
Requires (Dev)
- symfony/console: ^4.0
This package is not auto-updated.
Last update: 2025-03-03 01:27:25 UTC
README
##协程 HTTP 客户端
简介
提供可以在协程模式下工作的非阻塞 HTTP 请求功能。
当前根据项目实际需要,仅提供最小化功能。
具体功能如下:
- 只支持 GET、POST 请求;
- 不支持文件上传;
- 不支持 HTTPS 协议;
- 不支持 gzip、deflate 等内容编码;
- 不支持 COOKIE;
- 不支持认证机制;
使用方式:
API 参照 guzzlehttp 设计,不过不支持其中部分选项。
Example 1:
include __DIR__."/../vendor/autoload.php"; use lanzhi\http\Client; use Symfony\Component\Console\Output\ConsoleOutput; use Symfony\Component\Console\Logger\ConsoleLogger; $output = new ConsoleOutput(ConsoleOutput::VERBOSITY_VERY_VERBOSE); $client = new Client([], new ConsoleLogger($output)); //file:get.php 将拿到的 $_GET 参数 ksort 排序之后,使用 json_encode($get, JSON_UNESCAPED_UNICODE) 转换为字符串输出 $uri = "test.com/get.php"; $query = [ 'name' => 'lanzhi', 'sex' => 'male', 'age' => 'unknown', 'tag' => uniqid() ]; $request = $client->get($uri, ['query'=>$query]); $request->run(); $response = $request->getReturn(); if($response->getBody()){ echo "response body size:", $response->getBody()->getSize(), "\n"; ksort($query); echo "query: ", json_encode($query, JSON_UNESCAPED_UNICODE), "\n"; echo "body: ", $response->getBody()->getContents(), "\n"; }else{ var_dump($response); } echo "response status: ", $response->getStatusCode(), "\n"; echo "response phrase: ", $response->getReasonPhrase(), "\n\n";
其它可参见项目 examples 目录
联系作者
QQ : 310929334
微信: lanzhi_me