easyswoole - 基于swoole扩展实现的一款高性能php框架

HttpClient

協程Http客戶端,基于\Swoole\Http\Client實現,在協程內快速發起http請求。

安裝

composer require easyswoole/http-client

請求

需要在協程環境內發起請求。

請求實例

$client = new \EasySwoole\HttpClient\HttpClient('http://easyswoole.com');

設置Url

可在實例化的時候,傳入Url,或者如下:

/** @var \EasySwoole\HttpClient\HttpClient $client **/
$client->setUrl('http://easyswoole.com');

設置query

通過url傳入.

/** @var \EasySwoole\HttpClient\HttpClient $client **/
$client->setUrl('http://easyswoole.com?a=1');

通過方法傳入.

/** @var \EasySwoole\HttpClient\HttpClient $client **/
$client->setQuery(['a' => 1]);

注意:

setQuery方法將你原本url的參數也帶過來.

設置Ssl

/** @var \EasySwoole\HttpClient\HttpClient $client **/
$client->setEnableSSL(true);

設置等待超時時間

/** @var \EasySwoole\HttpClient\HttpClient $client **/
$client->setTimeout(5);

設置連接超時時間

/** @var \EasySwoole\HttpClient\HttpClient $client **/
$client->setConnectTimeout(10);

設置Header

設置單項:

/** @var \EasySwoole\HttpClient\HttpClient $client **/
$client->setHeader('test','test');

設置多項:

/** @var \EasySwoole\HttpClient\HttpClient $client **/
$client->setHeaders(['test' => 'test']);

參數:

  • $isMerge 默認:truefalse清空原有Header重新賦值。
  • $strtolower 默認:truefalse不進行小寫轉換。

設置Cookie

設置單項:

/** @var \EasySwoole\HttpClient\HttpClient $client **/
$client->addCookie('test','test');

設置多項:

/** @var \EasySwoole\HttpClient\HttpClient $client **/
$client->addCookies(['test' => 'test']);

參數:

  • $isMerge 默認:truefalse清空原有Cookie重新賦值。

設置XMLHttpRequest

/** @var \EasySwoole\HttpClient\HttpClient $client **/
$client->setXMLHttpRequest();

設置ContentType

/** @var \EasySwoole\HttpClient\HttpClient $client **/
$client->setContentType($client::CONTENT_TYPE_APPLICATION_XML);

json

/** @var \EasySwoole\HttpClient\HttpClient $client **/
$client->setContentTypeJson();

xml

/** @var \EasySwoole\HttpClient\HttpClient $client **/
$client->setContentTypeXml();

from-data

/** @var \EasySwoole\HttpClient\HttpClient $client **/
$client->setContentTypeFormData();

from-urlencode

/** @var \EasySwoole\HttpClient\HttpClient $client **/
$client->setContentTypeFormUrlencoded();

設置BasicAuth

/** @var \EasySwoole\HttpClient\HttpClient $client **/
$client->setBasicAuth('admin','admin');

設置KeepAlive

/** @var \EasySwoole\HttpClient\HttpClient $client **/
$client->setKeepAlive(true);

設置客戶端配置

單個設置:

/** @var \EasySwoole\HttpClient\HttpClient $client **/
$client->setClientSetting('bind_address','127.0.0.1');

批量設置:

/** @var \EasySwoole\HttpClient\HttpClient $client **/
$client->setClientSettings([
    'bind_address'=>'127.0.0.1',
    'bind_port'=>'8090'
]);

設置FollowLocation

/** @var \EasySwoole\HttpClient\HttpClient $client **/
$client->enableFollowLocation(5);

參數:

  • $maxRedirect 默認5,表示最多根據30x狀態碼進行的重定向次數。0 為關閉。

設置允許自簽證書

/** @var \EasySwoole\HttpClient\HttpClient $client **/
$client->setSslVerifyPeer(true,true);

設置服務器主機名稱

與ssl_verify_peer配置配合使用

/** @var \EasySwoole\HttpClient\HttpClient $client **/
$client->setSslHostName('');

設置驗證用的Ssl證書

/** @var \EasySwoole\HttpClient\HttpClient $client **/
$client->setSslCafile('');

設置Ssl證書目錄

/** @var \EasySwoole\HttpClient\HttpClient $client **/
$client->setSslCapath('');

設置Ssl證書文件

/** @var \EasySwoole\HttpClient\HttpClient $client **/
$client->setSslCertFile('');

設置Ssl證書私鑰文件

/** @var \EasySwoole\HttpClient\HttpClient $client **/
$client->setSslKeyFile('');

設置代理

http代理:

/** @var \EasySwoole\HttpClient\HttpClient $client **/
$client->setProxyHttp('127.0.0.1','1087','user','pass');

socks5代理:

/** @var \EasySwoole\HttpClient\HttpClient $client **/
$client->setProxySocks5('127.0.0.1','1086','user','pass');

設置端口綁定

/** @var \EasySwoole\HttpClient\HttpClient $client **/
$client->setSocketBind('127.0.0.1','8090');

GET

/** @var \EasySwoole\HttpClient\HttpClient $client **/
$client->get();

參數:

  • $headers 設置Header

HEAD

/** @var \EasySwoole\HttpClient\HttpClient $client **/
$client->head();

DELETE

/** @var \EasySwoole\HttpClient\HttpClient $client **/
$client->delete();

參數:

  • $headers 設置Header

PUT

/** @var \EasySwoole\HttpClient\HttpClient $client **/
$client->put();

參數:

  • $data 請求的數據
  • $headers 設置Header

POST

/** @var \EasySwoole\HttpClient\HttpClient $client **/
$client->post();

post-xml

/** @var \EasySwoole\HttpClient\HttpClient $client **/
$client->postXml();

post-json

/** @var \EasySwoole\HttpClient\HttpClient $client **/
$client->postJson();

參數:

  • $data 請求的數據
  • $headers 設置Header

PATCH

/** @var \EasySwoole\HttpClient\HttpClient $client **/
$client->patch();

參數:

  • $data 請求的數據
  • $headers 設置Header

OPTIONS

/** @var \EasySwoole\HttpClient\HttpClient $client **/
$client->options();

參數:

  • $data 請求的數據
  • $headers 設置Header

Download

/** @var \EasySwoole\HttpClient\HttpClient $client **/
$client->download('./test.png');

參數:

  • $filename 保存路徑
  • $offset 寫入偏移量
  • $httpMethod 請求方法
  • $rawData 請求數據
  • $contentType 設置ContentType

上傳文件

/** @var \EasySwoole\HttpClient\HttpClient $client **/
$client->post([
    'file' => new \CURLFile(__FILE__)
]);

分片上傳:


$file = new EasySwoole\HttpClient\Bean\CURLFile('file',__FILE__);

// 設置表單的名稱
$file->setName('file');

// 設置要文件的路徑

$file->setPath(__FILE__);

// 設置文件總大小
$file->setLength(filesize(__FILE__));

// 設置offset(分片上傳的關鍵)
$file->setOffset(0);

// 設置文件類型
$file->setType('image/png');

/** @var \EasySwoole\HttpClient\HttpClient $client **/
$client->post([
    'file' => $file
]);

響應

以上快速發起http請求成功后,如(GETPOST),將會返回EasySwoole\HttpClient\Bean\Response

獲取響應體

/** @var \EasySwoole\HttpClient\Bean\Response $response **/
$response->getBody();

當響應體為json,解析:

/** @var \EasySwoole\HttpClient\Bean\Response $response **/
$response->json();

參數:

  • $assoc 默認falsefalseobjecttrue為數組。

當響應體為jsonp,解析:

/** @var \EasySwoole\HttpClient\Bean\Response $response **/
$response->jsonp();

參數:

  • $assoc 默認falsefalseobjecttrue為數組。

當響應體為xml,解析:

/** @var \EasySwoole\HttpClient\Bean\Response $response **/
$response->xml();

參數:

  • $assoc 默認falsefalseobjecttrue為數組。

獲取錯誤碼

/** @var \EasySwoole\HttpClient\Bean\Response $response **/
$response->getErrCode();

獲取錯誤信息

/** @var \EasySwoole\HttpClient\Bean\Response $response **/
$response->getErrMsg();

獲取響應狀態碼

/** @var \EasySwoole\HttpClient\Bean\Response $response **/
$response->getStatusCode();

獲取響應頭及設置的Cookie

/** @var \EasySwoole\HttpClient\Bean\Response $response **/
$response->getSetCookieHeaders();

獲取請求的Cookie及響應頭

/** @var \EasySwoole\HttpClient\Bean\Response $response **/
$response->getCookies();

WebSocket-Client

$client = new \EasySwoole\HttpClient\HttpClient('127.0.0.1:9501');
$upgradeResult = $client->upgrade(true);
$frame = new \Swoole\WebSocket\Frame();
//設置發送的消息幀
$frame->data = json_encode(['action' => 'hello','content'=>['a'=>1]]);
$pushResult = $client->push($frame);
$recvFrame = $client->recv();
//將返回bool或一個消息幀,可自行判斷
var_dump($recvFrame);

recv只會接收一次服務器的消息,如果需要一直接收,請增加while(1)死循環。

主站蜘蛛池模板: 名嘉宴会【官网】_宁波冷餐_宁波茶歇_宁波酒会_宁波自助餐_宁波盛世名嘉宴会服务有限公司 | 水电站泵站LCU控制屏_发电机保护_变压器保护_逆功率保护_防孤岛保护装置_ 电力微机保护网 | 活性炭吸附设备,UV光氧废气处理设备,破碎机专用除尘器,催化燃烧设备厂家-河北碧清环保设备有限公司 | 全自动码垛机|码垛机器人|高位码垛机械手|拆垛机|缠绕机|山东腾阳智能装备有限公司 | 噪声治理,消声器,隔声屏障,隔声罩,噪声控制,降噪,空调降噪,水泵噪声治理,冷却塔噪声治理-北京华清恒业环保设备有限公司 | 削片机|木材破碎机|木材粉碎机|模板破碎机|双轴撕碎机_郑州木工机械制造厂 | 九江市东鸿气体有限公司| 陕西教师资格网-陕西教师资格考试网 | 仪器仪表维修_示波器维修_进口分析仪维修_热像仪维修_上海仰光电子仪器仪表维修部 | 七评-爱美儿信息科技有限公司〖官网〗? | 上海浩斌信息科技有限公司RFID读写器,IC卡读卡器,手持机,数据采集终端,电力仓库管理软件开发,固定资产软件,纱管标签,试剂管理,RFID试剂柜,档案管理,档案柜,智能货架 | 素时刻 - 为亿万家庭提供健康饮食 | 襄阳燃烧器厂家-低氮燃烧器价格-河北五通道燃烧器就找襄阳市胜合燃力设备有限公司一站式服务 | 曙海培训-仿真培训Linux培训html5培单片机培训PCB培训python培训PLC培训C语言培训android培训物联网培训无线电培训欧姆龙培训工业机器人培训5G培训Hadoop培训CFD培训项目外包开发咨询 | 手术示教系统-实训示教系统-数字化手术室-直播录播系统 - 深圳市视源视讯技术有限公司 | 航星洗涤机械有限公司_洗脱机_烘干机_烫平机_折叠机| 液位变送器_智能压力变送器_3051差压变送器_单双法兰,投入式,电容式,温度变送器-淮安润中仪表科技有限公司 | 金酱酒_金酱酒代理加盟招商_OEM贴牌企业定制! – 金酱酒代理加盟!茅台镇较早的酿酒烧坊,年产优质酱香白酒5000余吨,仁怀市十强白酒企业,主营主品:金酱酒、金酱陈香酒、酱香老酒等系列品牌产品 | 上海垃圾房,简易成品环保垃圾房,小区室外垃圾房,上海翼亭智能垃圾房厂家 | 金蝶软件_金蝶湖南公司_长沙金蝶软件_精斗云软件_财务软件_进销存软件_云ERP软件_金蝶软件销售电话 | 文化艺术网-专注文化,服务艺术 温州网络公司_网站建设_网络营销策划_阿里淘宝店铺服务-温州聚欣网络科技有限公司 | 望崖阁书法培训班-杭州书法高考培训班2023届招生简章-优清画院 | 首页-南德电气集团-电能质量产品解决方案|能源数字化系统解决方案|新能源检测评估服务|电力/光伏/储能EPC工程总承包 | 抛丸机-H型钢结构抛丸机-钢板通过式抛丸机厂家-泓霖喷砂除锈设备 | 上海祝融起重机械有限公司-德国耶鲁手拉葫芦|耶鲁手拉葫芦|耶鲁手扳葫芦|耶鲁电动葫芦经销代理 | 企多网-B2B网站,B2B商务平台免费b2b,推荐注册送积分,免费注册企业商铺, | 威海华东数控股份有限公司| 联塑管代理,联塑管厂家批发,中财管总代理,康泰管代理,康泰管厂家批发-邯郸市中枢贸易有限公司 | 上海同田生物技术有限公司-逆流色谱供应商和应用技术服务商 | 无锡鑫润杰金属科技有限公司| 艺考培训-中影人教育 【官网】-中国艺考教育的引航者 | 容积式换热器,半容积式换热器-绍兴市压力容器有限公司 | 真空上料机_加料机_天津自动上料机_投料站_包装机加料_吸料机_粉体称重-天津市飞云粉体设备有限公司 | 破碎机锤头_知名破碎机锤头厂家-巩义东辰 | 日本国际高中学校招生【立学仕日本留学服务】日语中学学校|美术生|艺术生|高中生|本科|研究生|语言学校留学择校申请 | 铸铁平台-焊接平台-划线平台-三维焊接平台厂家-泊头市溪海冶金机械设备有限公司 | 酒店设计_建筑设计_室内装修装饰-北极点酒店设计公司 | 金酱酒_金酱酒代理加盟招商_OEM贴牌企业定制! – 金酱酒代理加盟!茅台镇较早的酿酒烧坊,年产优质酱香白酒5000余吨,仁怀市十强白酒企业,主营主品:金酱酒、金酱陈香酒、酱香老酒等系列品牌产品 | 培训桌-培训椅-会议椅-洽谈桌-培训桌椅生产厂家-【鼎优家具】 | 聚达|聚达物联|聚达物联科技|杭州聚达物联科技有限公司|www.judawulian.com|智慧社区|数字驾驶舱|智慧清运|智慧工地|邻家小达 | 武汉办公室装修公司-展厅装修_湖北今泰装饰工程有限公司官网_今泰装饰 |