多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# Coroutine\\Http\\Client [TOC] > 协程版Http客户端基于原生的AsyncIo中的异步Http客户端,基本的设置和使用方法和异步Http客户端一致,不在需要注册回调函数,只需要同步写法即可,使用方法和Swoole\\Http\\Client一致的此处不再列出,请参考[swoole\\AsyncIO\\异步Http/WebSocket客户端](异步Http-WebSocket客户端.md),对于使用有区别的函数,此处单独说明 `Swoole-2.0.0`版本增加了对协程版`Http`客户端的支持。底层是用纯`C`编写,拥有超高的性能。 ## Saber - 人性化的协程HTTP客户端封装库 开发者可使用已封装的[协程HTTP客户端Saber](https://github.com/swlib/saber) * 基于Swoole协程Client开发 * 人性化使用风格, ajax.js/axios.js/requests.py用户福音, 同时支持PSR风格操作 * 浏览器级别完备的Cookie管理机制, 完美适配爬虫/API代理应用 * 请求/响应/异常拦截器 * 多请求并发, 并发重定向优化 * 连接池, 自动化复用长连接 * 通道池(Chan): 最大连接数限制+无阻塞 * HTTPS连接, CA证书自动化支持 * HTTP/Socks5 Proxy支持 * WebSocket连接支持 * 毫秒级超时定时器 * 自动化 编码请求/解析响应 数据 * 响应报文自动编码转换 * 异步超大文件上传/下载, 断点重传 * 自动重试机制 * 单次并发数控制 * 多模式/超细粒度异常处理机制 ## 启用协程Http客户端 * 不依赖任何第三方扩展库, 默认开启 * 支持`Http-Chunk`、`Keep-Alive`特性,支持`form-data`格式 * Http协议版本为`HTTP/1.1` * 支持升级为websocket客户端 * `gzip`压缩格式支持需要依赖`zlib`库(默认都有) ## 构造方法 ~~~ function Swoole\Coroutine\Http\Client->__construct(string $host, int port, bool $ssl = false); ~~~ * `$host`目标服务器主机地址,可以为`IP`或域名,底层自动进行域名解析 * `$port`目标服务器的端口,一般`http`为`80`,`https`为`443` * `$ssl`是否启用`SSL/TLS`隧道加密,如果目标服务器是`https`必须设置`$ssl`参数为`true` ## 使用实例 ~~~ $cli = new Swoole\Coroutine\Http\Client('127.0.0.1', 80); $cli->setHeaders([ 'Host' => "localhost", "User-Agent" => 'Chrome/49.0.2587.3', 'Accept' => 'text/html,application/xhtml+xml,application/xml', 'Accept-Encoding' => 'gzip', ]); $cli->set([ 'timeout' => 1]); $cli->get('/index.php'); echo $cli->body; $cli->close(); ~~~ * 如果未设置`timeout`,则将底层`connect`和`request`超时设置为默认的`500ms` #### defer特性 * * * 请参考[并发Client](并发调用.md)一节。