HTTP客户端,主要用于代替PHP-FPM的CURL模块。
依赖\x\Client
组件,调用http()
方法建立HTTP客户端实例。
依赖类:(new \x\Client())->http()
方法名:domain()
参数:
string $domain
返回值:\x\Client
对象本身
使用示例:
<?php
$httpClient = (new \x\Client())->http();
$httpClient->domain('https://www.sw-x.cn/api.html');
依赖类:(new \x\Client())->http()
方法名:body()
参数:
string|array $data
JSON
就是字符串,如果是表单就是array
返回值:\x\Client
对象本身
使用示例:
<?php
$httpClient = new \x\Client();
$res = $httpClient->http()
->domain('https://www.sw-x.cn/api.html')
->body(['name' => 'SW-X']);
HTTP客户端组件,支持3类请求:get
、post
、download
。
依赖类:(new \x\Client())->http()
方法名:get()
、post()
、download()
参数:无
返回值:成功返回请求内容,失败返回false
。
使用示例:
用于发起GET
请求:
<?php
$httpClient = new \x\Client();
$res = $httpClient->http()
->domain('https://www.sw-x.cn/api.html')
->body(['name' => 'SW-X'])
->get();
用于发起POST
请求:
<?php
$httpClient = new \x\Client();
$res = $httpClient->http()
->domain('https://www.sw-x.cn/api.html')
->body(['name' => 'SW-X'])
->post();
用于下载远程文件。
download()
方法可传入两个参数:
string $filename
int $offset
HTTP
头 Range:bytes=$offset
实现】0
,为0
时若文件已存在,底层会自动清空此文件,非必填<?php
$httpClient = new \x\Client();
$res = $httpClient->http()
->domain('https://www.sw-x.cn/img/Logo.png')
->download(ROOT_PATH.'public/Logo.png');
该方法用于获得请求的错误状态码,errCode
的值等于 Linux errno
。
依赖类:(new \x\Client())->http()
方法名:errCode()
参数:无
返回值:int:Linux errno
使用示例:
<?php
$httpClient = (new \x\Client)->http();
$res = $httpClient->domain('https://www.sw-x.cn/api.html')
->body(['name' => 'SW-X'])
->post();
$errCode = $httpClient->errCode();
statusCode
为请求的HTTP响应状态码,可用于判断Swoole-Client是否请求异常。
依赖类:(new \x\Client())->http()
方法名:statusCode()
参数:无
返回值:int:HTTP Status Code
使用示例:
<?php
$httpClient = (new \x\Client)->http();
$res = $httpClient->domain('https://www.sw-x.cn/api.html')
->body(['name' => 'SW-X'])
->post();
$statusCode = $httpClient->statusCode();
依赖类:(new \x\Client())->http()
方法名:headers()
参数:无
返回值:array
使用示例:
<?php
$httpClient = (new \x\Client)->http();
$res = $httpClient->domain('https://www.sw-x.cn/api.html')
->body(['name' => 'SW-X'])
->post();
$headers = $httpClient->headers();
依赖类:(new \x\Client())->http()
方法名:cookies()
参数:无
返回值:string
使用示例:
<?php
$httpClient = (new \x\Client)->http();
$res = $httpClient->domain('https://www.sw-x.cn/api.html')
->body(['name' => 'SW-X'])
->post();
$cookies = $httpClient->cookies();
HTTP客户端除了以上封装的方法支持以外,还支持原生Swoole-Client
的一些格外操作,例如setHeaders()
、setCookies()
、set()
等。
示例:
<?php
$httpClient = new \x\Client();
$res = $httpClient->http()
->domain('https://www.sw-x.cn/api.html')
->body(['name' => 'SW-X'])
->set([
'timeout' => 10,
'keep_alive' => false,
])
->setHeaders([
'User-Agent' => 'Chrome/49.0.2587.3',
'Accept' => 'text/html,application/xhtml+xml,application/xml',
])
->setCookies([
'cookie' => 'Hm_lvt_5d9f29e57619d3dab924a9fb...'
])
->post();
更多的原生方法支持,请参考Swoole官方手册:HTTP客户端篇