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. 记一场与 cookie 的相遇

    简介: cookie 翻译过来为 “小甜点,一种酥性甜饼干,很美味的...”,咳咳,打住!我们这里说的是 “甜点” 文件,它是浏览器储存在用户电脑上的一小段纯文本格式的文件. 由于 http 是一种无 ...

  2. request.getParameterValues 出现 [Ljava.lang.String;@ 错误

    在实现简单的本地登录系统时,需要把page1.jsp的表单显示在page2.jsp中. 其中获取page1.jsp表单的办法就是在页面1的<form>中加入action="pag ...

  3. EL表达式 - 日常使用表达式记录

    表达式 说明 ${field} 查找域,page ->request -> session -> application 中的值. ${field == null ? field1: ...

  4. 2018-2019-2 20165325《网络对抗技术》Exp0 Kali安装 Week1

    2018-2019-2 20165325<网络对抗技术>Exp0 Kali安装 Week1 一.安装kali VMware上学期已经有了,主要是下载Kali-Linux-2019.1-vm ...

  5. 20175204 张湲祯 2018-2019-2《Java程序设计》2

    20175204 张湲祯 2018-2019-2<Java程序设计>2 必做课下作业MyCP 要求 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP ...

  6. python中的多线程和多进程编程

    注意:多线程和多线程编程是不同的!!! 第一点:一个进程相当于一个要执行的程序,它会开启一个主线程,多线程的话就会再开启多个子线程:而多进程的话就是一个进程同时在多个核上进行: 第二点:多线程是一种并 ...

  7. Debug Dump file

    dump file is a snapshot of the processs memeory. to debug it, we need use its corresponding executiv ...

  8. python学习第37天

    MySQL数据库 数据库的优势 什么是数据(Data) 什么是数据库(DataBase,简称DB) 什么是数据库管理系统(DataBase Managerment System 简称DBMS) 数据库 ...

  9. eclipse新建工作空间后的常用设置

    1.设置字体 一般主要设置下面三个地方(其他可以按需进行设置): Window->Preferences->(可以直接搜索font)General -> Appearance -&g ...

  10. 射线法(1190 - Sleepwalking )

    题目:http://lightoj.com/volume_showproblem.php?problem=1190 参考链接:https://blog.csdn.net/gkingzheng/arti ...