中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ThinkPHP6如何結合GuzzleHTTP發送HTTP請求

發布時間:2021-05-14 15:21:29 來源:億速云 閱讀:863 作者:小新 欄目:編程語言

這篇文章主要介紹ThinkPHP6如何結合GuzzleHTTP發送HTTP請求,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

背景

thinkphp微信公眾號程序主動調用微信的接口需要用到access_token,以及需要主動發送請求設置公眾號菜單。

為什么選擇GuzzleHTTP

Guzzle是一個PHP的HTTP客戶端,用來輕而易舉地發送請求,并集成到我們的WEB服務上。

接口簡單:構建查詢語句、POST請求、分流上傳下載大文件、使用HTTP cookies、上傳JSON數據等等。
發送同步或異步的請求均使用相同的接口。
使用PSR-7接口來請求、響應、分流,允許你使用其他兼容的PSR-7類庫與Guzzle共同開發。
抽象了底層的HTTP傳輸,允許你改變環境以及其他的代碼,如:對cURL與PHP的流或socket并非重度依賴,非阻塞事件循環。
中間件系統允許你創建構成客戶端行為。

Guzzle中文文檔:https://guzzle-cn.readthedocs.io/zh_CN/latest/

安裝GuzzleHTTP

1.安裝composer
因為thinkphp6采用composer安裝,所以我的環境上已經裝好了composer,此處略過安裝composer方法。需要請自行百度。

2.安裝Guzzle

進入到tp項目目錄

 cd /Applications/XAMPP/htdocs/tp1/tp

執行安裝命令

composer require guzzlehttp/guzzle

3.在php.ini文檔中打開extension=php_openssl.dll

發送http get示例代碼

1、在controller中引入GuzzleHttp

use GuzzleHttp\Client;
use GuzzleHttp\Exception\GuzzleException;

2、下面的示例程序是在tp6中采用HTTP GET獲取微信公眾平臺的access token

       //微信公眾平臺獲取access token url
        $url = 'https://api.weixin.qq.com/cgi-bin/token?';
       //獲取access token時需要攜帶的參數
        $params = array(
            'grant_type' => 'client_credential',
            'appid' => config('app.WECHAT.APPID'),
            'secret' => config('app.WECHAT.SECRET')
        );
        $resp = null;
        try {
           //使用GuzzleHTTP發送get請求
            $client = new Client();
            $resp = $client->request('GET', $url.http_build_query($params));
        } catch (GuzzleException $e){
            print($e);
        }

        if (empty($resp)) {
            return null;
        }
        //獲取微信公眾平臺的response
        $data = json_decode($resp->getBody(), true);
        if (isset($data['errcode']) && $data['errcode'] != 0) {
            throw new \think\Exception ($data['errmsg'], $data['errcode']);
        }
發送http post示例代碼

用法非常簡單,直接看代碼吧。

    /**
     * 創建自定義菜單
     */
    public function menu()
    {
        require __DIR__ . '/../../vendor/autoload.php';
        //構建HTTP post JSON body數據
        $data = array(
            'button' => array(
                array(
                    'type' => 'click',
                    'name' => '主菜單1',
                    'sub_button' => array(
                        array(
                            'type' => 'click',
                            'name' => '子菜單1',
                            'key' => self::MENU_MAIN_1_CHILD_1
                        ),
                        array(
                            'type' => 'view',
                            'name' => '百度',
                            'url' => 'https://www.baidu.com'
                        )
                    )
                ),
                array(
                    'type' => 'click',
                    'name' => '主菜單2',
                    'sub_button' => array(
                        array(
                            'type' => 'click',
                            'name' => '子菜單1',
                            'key' => self::MENU_MAIN_2_CHILD_1
                        ),
                        array(
                            'type' => 'view',
                            'name' => 'QQ',
                            'url' => 'http://www.qq.com'
                        )
                    )
                ),
                array(
                    'type' => 'click',
                    'name' => '主菜單3',
                    'key' => self::MENU_MAIN_3
                )
            )
        );
        //構造請求json body和header數據
        $options = json_encode($data, JSON_UNESCAPED_UNICODE);
        $jsonData = [
            'body' => $options,
            'headers' => ['content-type' => 'application/json']
        ];

        $resp = null;
        try {
            $client = new Client();
            //生成微信公眾號菜單需要調用的微信接口url
            $url = 'https://api.weixin.qq.com/cgi-bin/menu/create?access_token=' . $this->_getAccessToken();
            //發送http post請求
            $resp = $client->post($url, $jsonData);
        } catch (GuzzleException $e){
            print($e);
        }


        if (empty($resp)) {
            return null;
        }

        echo $resp->getBody();
    }

以上是“ThinkPHP6如何結合GuzzleHTTP發送HTTP請求”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

福海县| 洛扎县| 清苑县| 长沙市| 都江堰市| 白银市| 常州市| 鹿泉市| 读书| 资中县| 五家渠市| 吉首市| 福建省| 阿克陶县| 邳州市| 酉阳| 乐安县| 巴南区| 泾川县| 罗田县| 尉氏县| 桃江县| 迁西县| 大荔县| 凤翔县| 南郑县| 渭南市| 和林格尔县| 寿阳县| 聊城市| 甘南县| 治多县| 乐陵市| 方山县| 孝昌县| 榆树市| 泽库县| 宜阳县| 杂多县| 福建省| 资兴市|