Coroutine\Http\Client

协程版Http客户端基于原生的AsyncIo中的异步Http客户端,基本的设置和使用方法和异步Http客户端一致,不在需要注册回调函数,只需要同步写法即可,使用方法和Swoole\Http\Client一致的此处不再列出,请参考 swoole\AsyncIO\异步Http/WebSocket客户端,对于使用有区别的函数,此处单独说明

Swoole-2.0.0版本增加了对协程版Http客户端的支持。底层是用纯C编写,拥有超高的性能。

Saber - 人性化的协程HTTP客户端封装库

开发者可使用已封装的协程HTTP客户端Saber

  • 基于Swoole协程Client开发
  • 人性化使用风格, ajax.js/axios.js/requests.py用户福音, 同时支持PSR风格操作
  • 浏览器级别完备的Cookie管理机制, 完美适配爬虫/API代理应用
  • 请求/响应/异常拦截器
  • 多请求并发, 并发重定向优化
  • 连接池, 自动化复用长连接
  • 通道池(Chan): 最大连接数限制+无阻塞
  • HTTPS连接, CA证书自动化支持
  • HTTP/Socks5 Proxy支持
  • WebSocket连接支持
  • 毫秒级超时定时器
  • 自动化 编码请求/解析响应 数据
  • 响应报文自动编码转换
  • 异步超大文件上传/下载, 断点重传
  • 自动重试机制
  • 单次并发数控制
  • 多模式/超细粒度异常处理机制

启用协程Http客户端

  • 不依赖任何第三方扩展库, 默认开启
  • 支持Http-ChunkKeep-Alive特性,支持form-data格式
  • Http协议版本为HTTP/1.1
  • 支持升级为websocket客户端
  • gzip压缩格式支持需要依赖zlib库(默认都有)

构造方法

  1. function Swoole\Coroutine\Http\Client->__construct(string $host, int port, bool $ssl = false);
  • $host 目标服务器主机地址,可以为IP或域名,底层自动进行域名解析
  • $port 目标服务器的端口,一般http80https443
  • $ssl 是否启用SSL/TLS隧道加密,如果目标服务器是https必须设置$ssl参数为true

使用实例

  1. $cli = new Swoole\Coroutine\Http\Client('127.0.0.1', 80);
  2. $cli->setHeaders([
  3. 'Host' => "localhost",
  4. "User-Agent" => 'Chrome/49.0.2587.3',
  5. 'Accept' => 'text/html,application/xhtml+xml,application/xml',
  6. 'Accept-Encoding' => 'gzip',
  7. ]);
  8. $cli->set([ 'timeout' => 1]);
  9. $cli->get('/index.php');
  10. echo $cli->body;
  11. $cli->close();
  • 如果未设置timeout,则将底层connectrequest超时设置为默认的500ms

defer特性


请参考并发Client一节。