微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

【TP5】安装Guzzle并简单使用

Guzzle是一个PHP的HTTP客户端,用来轻而易举地发送请求,并集成到我们的WEB服务上。

安装

看到文档的安装方式会不知道怎么弄,因为composer安装列表没有下载方式

(1)打开项目的composer.json文件添加GuzzleHttp这个安装包

(2)执行composer update

(3)然后项目就有了

使用GuzzleHttp

(1)引入

(2)请求代码

(3)发起请求,这就是简单的使用

源码

base.PHP文件

<?PHP

namespace app\huanxin\controller;

use think\config;
use think\Controller;
use GuzzleHttp\Client;
use GuzzleHttp\Exception\RequestException;

class Base extends Controller
{
    protected $orgname;
    protected $appname;
    protected $client_ID;
    protected $client_Secret;
    protected $request_url;


    public function __construct()
    {
        $this->orgname       = config::get('orgname');
        $this->appname       = config::get('appname');
        $this->client_ID     = config::get('client_ID');
        $this->client_Secret = config::get('client_Secret');
        $this->request_url   = 'https://a1.easemob.com/';
    }

    /**
     * author:咔咔
     *
     * 基础请求地址
     * @return string
     */
    public function baseUrl()
    {
        return $this->request_url . $this->orgname . '/' . $this->appname . '/';
    }

    /**
     * 发送请求
     * @param $method   请求方式
     * @param array $params  请求参数
     * @param $options
     * @return array|mixed
     * @throws Error
     */
    public function request($method,$url,$params = [],$options = [])
    {
        $config = ['base_uri' => $this->baseUrl()];
        $client = new Client($config);
        $header = [
            'Content-Type' => 'application/json','Accept'       => 'application/json',];

        $data = ['connect_timeout' => 30,'headers' => $header];
        if ($method == 'GET') {
            $data['query'] = $params;
        } else {
            $data['json'] = $params;
        }

        $options && $data = array_merge($data,$options);
        $body = [];
        try {
            $res = $client->request($method,$data);
            $body = \GuzzleHttp\json_decode($res->getBody()->getContents(),1);
        } catch (RequestException $e) {
            throw new Error($e->getMessage(),-1);
        }
        return $body;
    }

    /**
     * author:咔咔
     *
     * 获取token
     * @throws Error
     */
    public function getTokenFromServer()
    {
        $data   = [
            'grant_type'    => 'client_credentials','client_id'     => $this->client_ID,'client_secret' => $this->client_Secret
        ];
        $result = $this->request('POST','token',$data);
        return $result;
    }

}

error.PHP文件

<?PHP

namespace app\huanxin\controller;

use Exception;

class Error extends \Exception
{
    public function __construct($message = "",$code = 0,Exception $prevIoUs = null)
    {
        parent::__construct($this->_getMessage($message),$code,$prevIoUs);
    }

    // Todo 异常信息过滤
    private function _getMessage($msg)
    {
        $message = $msg;

        return $message;
    }
}

index.PHP文件

<?PHP

namespace app\huanxin\controller;

use think\config;

class Index extends Base
{
    public function index()
    {
        $data = $this->getTokenFromServer();
        dump($data);die;
    }


}

项目目录

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐