异步Http/WebSocket客户端
最后更新于:2022-04-02 06:39:17
# 异步Http/WebSocket客户端
[TOC]
Swoole-1.8.0版本增加了对异步`Http/WebSocket`客户端的支持。底层是用纯C编写,拥有超高的性能。
## 启用Http客户端
* 1.8.6版本之前,需要在编译swoole时增加`--enable-async-httpclient`来开启此功能。
* swoole\_http\_client不依赖任何第三方库
* 支持`Http-Chunk`、`Keep-Alive`、`form-data`
* Http协议版本为`HTTP/1.1`
* `gzip`压缩格式支持需要依赖`zlib`库
## 构造方法
~~~
function swoole_http_client->__construct(string $ip, int port, bool $ssl = false);
~~~
* $ip 目标服务器的IP地址,可使用`swoole_async_dns_lookup`查询域名对应的IP地址
* $port 目标服务器的端口,一般`http`为`80`,`https`为`443`
* $ssl 是否启用`SSL/TLS`隧道加密,如果目标服务器是`https`必须设置`$ssl`参数为`true`
## 对象属性
* `$body`请求响应后服务器端返回的内容
* `$statusCode`服务器端返回的Http状态码,如`404`、`200`、`500`等
* `$set_cookie_headers`服务器端返回的原始`COOKIE`信息,包括了`domain`和`path`项
* `$headers`Http请求头
* `$cookies`Http Cookie
## 异常错误码
某些情况下服务器端没有正常返回数据,底层会将`$statusCode`标记为负数。
* `-1`:连接超时,服务器未监听端口或网络丢失,可以读取`$errCode`获取具体的网络错误码
* `-2`:请求超时,服务器未在规定的`timeout`时间内返回`response`
* `-3`:客户端请求发出后,服务器强制切断连接
';