yii2 httpClient的用法
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的用法的更多相关文章
- Yii2 AR find用法 (2016-05-18 12:06:01)
Yii2 AR find用法 (2016-05-18 12:06:01) 转载▼ User::find()->all(); 返回所有数据 User::findOne($id); ...
- HttpClient基本用法
<Apache HttpClient 4.3开发指南> Apache HttpClient 4系列已经发布很久了,但由于它与HttpClient 3.x版本完全不兼容,以至于业内采用此库的 ...
- HttpClient的用法
客户端模拟http请求工具 Postmen(谷歌插件).RestClient 服务器模拟http请求工具 httpclient.HttpURLConnection httpCient请求代码 /** ...
- HttpClient的用法总结
使用HttpClient连接服务端的步骤: 1.创建HttpClient客户端对象 HttpClient client = new DefaultHttpClient(); 2.创建请求对象 ...
- HttpClient基础用法
一.HttpClient HttpClient是Apache HttpComponents 下的子项目,用来提供高效的.最新的.功能丰富的支持HTTP协议的客户端编程工具包(httpclient-4. ...
- Java测试开发--HttpClient常规用法(九)
1.HttpClient可以读取网页(HTTP/HTTPS)内容 2.对url发送get/post请求(带不带参数都可以),进行测试 一.maven项目pom.xml需要引入包 <depende ...
- yii2 ActiveRecord常用用法
User::find()->all(); 返回所有数据 User::findOne($id); 返回 主键 id=1 的一条数据 User::find()->where ...
- Yii2常用ActiveRecord用法
1.多表连表查询与对象关联查询 public function getWmsCheck(){ return $this->hasOne(\core\models\WmsCheck::classN ...
- Yii2 cache的用法(1)
数据缓存需要缓存组件提供支持,它代表各种缓存存储器, 例如内存,文件,数据库. 'components' => [ 'cache' => [ 'class' => 'yii\cach ...
随机推荐
- go之路
目录 go初识[第一篇]初识 go初识[第二篇]包.变量.函数
- hibernate查询出的实体,set值后,自动更新到数据
如图: 故事背景:(p.s.我们的项目没有正确配置事务xml文件,未明原因导致事务定义的规则不起作用)获取一个资讯对象,调用该对象的set方法设置其中的content字段,然后把修改后的实体丢到官网首 ...
- 软件测试面试-必掌握的 Linux常用命令大全--2.0更新版!
- 【转载】大白话Docker入门(二)
原文:https://yq.aliyun.com/articles/63517?spm=a2c4e.11153940.blogcont63035.15.12011c3fddklk0 上篇的大白话Doc ...
- United States Department of Agriculture 美国农业部网站数据自动下载小脚本
帮对象写的自动点击页面的小脚本,如果有需要的可以试试,(#^.^#) https://apps.fas.usda.gov/gats/ExpressQuery1.aspx var year = '199 ...
- zimbra6同域名与同hostname与同系统异机恢复
系统:redhat5.4_64 安装DNS:[root@test6 ~]# yum install bind -y[root@test6 ~]# yum install bind-chroot -y[ ...
- DEV控件GridControl常用属性设置(转)
1. 如何解决单击记录整行选中的问题 View->OptionsBehavior->EditorShowMode 设置为:Click 2. 如何新增一条记录 (1).gridView. ...
- Shell学习笔记(二)
if 语句 最简单的用法就是只使用 if 语句,它的语法格式为: if condition then statement(s) fi condition是判断条件,如果 condition 成立(返回 ...
- NOIP2018Day1T2 货币系统
题目描述 在网友的国度中共有 \(n\) 种不同面额的货币,第 \(i\) 种货币的面额为 \(a[i]\),你可以假设每一种货币都有无穷多张.为了方便,我们把货币种数为 \(n\).面额数组为 \( ...
- stderr和stdout详细解说
今天又查了一下fprintf,其中对第一个参数stderr特别感兴趣. int fprintf(FILE *stream,char *format,[argument]): 在此之前先区分一下:pri ...