数据库 - Model 前置说明
官方开源项目 抓取代理IP

介绍

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类请求:getpostdownload


依赖类:(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

    • 功能:指定写入文件的偏移量【此选项可用于支持断点续传,可配合 HTTPRange: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

该方法用于获得请求的错误状态码,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

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();

获取返回的Headers

依赖类:(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();

获取返回的Cookies

依赖类:(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客户端篇

SW-X

企业级 - 高性能 PHP 框架

最后更新:3年前 . 作者-小黄牛

本篇目录