yii2 httpClient的用法示例:

<?php
/*
* @Purpose : yii2 httpClient 请求示例
* @Author : Chrdai
* @Time : 2018-05-09
* */ use Yii;
use yii\base\Controller;
use yii\helpers\Json;
use yii\httpclient\Client; class TestController extends Controller
{
//use ControllerTrait; /*
* @Perpose 定义接口请求地址
*/
public $url = 'http://192.168.18.100'; /**
* @var Client
*/
public $httpClient = null; /*
* @Perpose 错误信息
*/
public $errMsg = ''; /*
* @Perpose 初始化的时候设置好接口请求地址
*/
public function init()
{
parent::init();
$this->httpClient = new Client([
'baseUrl' => $this->url
]);
} /**
* @Perpose : GET请求示例
* http-client 接口文档:https://www.yiiframework.com/extension/yiisoft/yii2-httpclient/doc/guide/2.0/en/installation
* @return mixed
* http://192.168.18.100/api/test/index
*/
public function actionIndex()
{
$params = 'username=admin&password=21232f297a57a5a743894a0e4a801fc3';
$res = $this->httpClient->get('api/auth/login?' . $params )
->setOptions([
CURLOPT_CONNECTTIMEOUT => 5, // connection timeout
CURLOPT_TIMEOUT => 10, // data receiving timeout
])
->send();
echo "<pre>";
//var_dump($res);
var_dump($res->isOk);
var_dump($res->data);
if($res->isOk && is_array($res->data)){
if($res->data['errno'] == 0){
return Json::encode($res->data['result']['access_token']);
}
}else{
$this->errMsg = $res->data['errmsg'];
throw new \Exception($this->errMsg);
}
return false;
} /**
* @Perpose : POST请求示例
*/
public function actionGetOrder()
{
$data = [
'user_id' => '1',
'dept_id' => '2',
];
$params = Json::encode($data);
$res = $this->httpClient->post('/api/order?access_token=c834472d8193946f6465c9264b9f64d0',$params,['Content-Type'=>'application/json'])
->setOptions([
CURLOPT_CONNECTTIMEOUT => 5, // connection timeout
CURLOPT_TIMEOUT => 10, // data receiving timeout
])
->send();
if ($res->isOk && is_array($res->data)) {
if ($res->data['errno'] == 0) {
return Json::encode($res->data['result']);
} else {
$this->errMsg = $res->data['errmsg'];
throw new \Exception($this->errMsg);
}
}
return false;
} public function actionGetOrder1()
{
$data = [
'user_id' => '1',
'dept_id' => '2',
];
$token['access_token'] = trim($this->actionIndex(),'"') ;
$url = strpos($this->url,'?') ? $this->url . '/api/order&' . http_build_query($token) : $this->url . '/api/just-ari?' . http_build_query($token);
//var_dump($url);die;
$res = $this->httpClient->createRequest()
->setMethod('POST') // 请求方式
->setUrl($url) // 请求地址
->setData($data) //数据传数组
->setHeaders(['Content-Type'=>'application/json']) //header
->setFormat(Client::FORMAT_JSON) //提交的数据的格式
->setOptions([
CURLOPT_CONNECTTIMEOUT => 5, // connection timeout
CURLOPT_TIMEOUT => 10, // data receiving timeout
])
->send();
if ($res->isOk && is_array($res->data)) {
if ($res->data['errno'] == 0) {
return Json::encode($res->data['result']);
} else {
$this->errMsg = $res->data['errmsg'];
throw new \Exception($this->errMsg);
}
}
return false;;
}
}

·

yii2 httpClient的用法的更多相关文章

  1. Yii2 AR find用法 (2016-05-18 12:06:01)

    Yii2 AR find用法 (2016-05-18 12:06:01) 转载▼     User::find()->all();    返回所有数据   User::findOne($id); ...

  2. HttpClient基本用法

    <Apache HttpClient 4.3开发指南> Apache HttpClient 4系列已经发布很久了,但由于它与HttpClient 3.x版本完全不兼容,以至于业内采用此库的 ...

  3. HttpClient的用法

    客户端模拟http请求工具 Postmen(谷歌插件).RestClient 服务器模拟http请求工具 httpclient.HttpURLConnection httpCient请求代码 /** ...

  4. HttpClient的用法总结

    使用HttpClient连接服务端的步骤: 1.创建HttpClient客户端对象 HttpClient client = new DefaultHttpClient(); 2.创建请求对象      ...

  5. HttpClient基础用法

    一.HttpClient HttpClient是Apache HttpComponents 下的子项目,用来提供高效的.最新的.功能丰富的支持HTTP协议的客户端编程工具包(httpclient-4. ...

  6. Java测试开发--HttpClient常规用法(九)

    1.HttpClient可以读取网页(HTTP/HTTPS)内容 2.对url发送get/post请求(带不带参数都可以),进行测试 一.maven项目pom.xml需要引入包 <depende ...

  7. yii2 ActiveRecord常用用法

    User::find()->all();    返回所有数据   User::findOne($id);   返回 主键 id=1  的一条数据   User::find()->where ...

  8. Yii2常用ActiveRecord用法

    1.多表连表查询与对象关联查询 public function getWmsCheck(){ return $this->hasOne(\core\models\WmsCheck::classN ...

  9. Yii2 cache的用法(1)

    数据缓存需要缓存组件提供支持,它代表各种缓存存储器, 例如内存,文件,数据库. 'components' => [ 'cache' => [ 'class' => 'yii\cach ...

随机推荐

  1. Web安全基础——小白自学

    2019-02-23   19:41:49 话不多说,直接分享我学习到的东西~ Web万维网(World Wide Web,WWW),这个名称我们熟悉不过啦.跟它密切相关就是HTTP,叫做超文本传输协 ...

  2. spring基于XML的声明式事务控制

    <?xml version="1.0" encoding="utf-8" ?><beans xmlns="http://www.sp ...

  3. PMI-ACP练习题知识积累-打印版

    敏捷铁三角的参数:价值,质量,约束.传统的铁三角包括的参数是范围,进度和成本 敏捷计划的三个主要层级为:发布计划,迭代计划,每日计划 敏捷开发模型的特征包括 开发由多个迭代组成. 敏捷拥抱不确定性,而 ...

  4. jmeter发起form-data格式

    两者缺一不可,等下再来研究..

  5. tensorflow从入门到放弃-0

    刚接触tensorflow一周,感觉还是有点难度的.遇到这么个问题 failed call to cuInit: CUDA_ERROR_NO_DEVICE: no CUDA-capable devic ...

  6. docker-elk装IK自定义分词库

    本人的elasticsearch是docker环境下运行 运行elasticsearch的容器,通过docker命令:docker exec -it 955e8d32d4a9 /bin/bash 进入 ...

  7. 洛谷 P2678 & [NOIP2015提高组] 跳石头

    题目链接 https://www.luogu.org/problemnew/show/P2678 题目背景 一年一度的“跳石头”比赛又要开始了! 题目描述 这项比赛将在一条笔直的河道中进行,河道中分布 ...

  8. Linux系统基本结构——摘自《循序渐进linux》

    系统与硬件 系统资源管理器 查看系统PCI设备 lspci 列出所有的pci设备如主板.声卡.显卡.网卡.usb接口设备 lspci -v 更详细的pci信息 查看cpu信息 more /proc/c ...

  9. mysql 服务器负载过高的解决分析之路

    最近我们有台 mysql 服务器一直报负载过高,不停的收到阿里云的报警短信,让我很抓狂,登陆上服务器,看下一下,慢查询日志 发现有60多万的慢查询日志,一看这个就知道是搜索带来的,一直想把搜索的服务给 ...

  10. [python][matlab]使用python调用matlab程序

    问题引入 在做实验的时候,需要用到python和matlab工具来进行不同的处理,比如在run神经网络的时候,需要使用pytorch框架得到网络的各个参数,在得到参数后需要使用matlab进行聚类规划 ...