Yii2 使用Curl

composer安装curl

命令行切入到你的项目目录执行

composer require --prefer-dist linslin/yii2-curl "*"

等待安装即可

安装完之后curl的位置

项目根目录/vendor/linslin

有linslin就是安装成功了

Yii2 使用Curl

 1 <?php
 2 namespace server\api;
 3 
 4 use yii;
 5 use yii\helpers\Json;
 6 use linslin\yii2\curl\Curl;
 7 use server\utils\Jwt;
 8 /**
 9  * API基础类
10  */
11 class BaseApi
12 {
13     const API_POST = 'POST';//POST 请求
14     const API_GET = 'GET';//GET 请求
15     const API_HEAD = 'HEAD';// HEAD 请求
16     const API_PUT = 'PUT';// PUT 请求
17     const API_DELETE = 'DELETE'; // DELETE 请求
18 
19 
20     /**
21      * 调用脚本接口
22      * @param $url 请求地址
23      * @param $params 接口参数
24      * @param $type 接口请求方式
25      * @return array ['error' => 1, 'msg' => '错误信息', 'data' => '数据']
26      */
27     public function callApi($url, $params, $type = self::API_POST)
28     {
29 
30         if (!$url) {
31             return [
32                 'error' => 1,
33                 'message' => '脚本请求地址为空',
34             ];
35         }
36 
37         $ret = ['error' => 1];
38         try {
39             $curl = new Curl();
40             // 请求方式
41             $curl = $curl->setHeaders([
42                 'Content-Type' => 'application/json',
43             ]);
44             // 设置请求时间120秒
45             $curl->setOption(CURLOPT_TIMEOUT, 120);
46 
47             switch ($type) {
48                 case self::API_GET:
49                     if (!empty($params)) {
50                         $url .= '?'.http_build_query($params);
51                     }
52                     $response = $curl->get($url);
53                     break;
54 
55                 case self::API_POST:
56                     $response = $curl->setRawPostData(Json::encode($params))->post($url);
57                     break;
58 
59                 case self::API_PUT:
60                     $response = $curl->setRawPostData(Json::encode($params))->put($url);
61                     break;
62 
63                 case self::API_DELETE:
64                     $response = $curl->setRawPostData(Json::encode($params))->delete($url);
65                     break;
66 
67                 default:
68                     $response = $curl->setRawPostData(Json::encode($params))->post($url);
69                     break;
70             }
71 
72             $result = $response ? Json::decode($response) : [];
73             if (isset($result['result']) && $result['result'] == 'success') {
74                 $ret['error'] = 0;
75                 $ret['message'] = isset($result['msg']) ? $result['msg'] : 'successful';
76                 $ret['data'] = isset($result['data']) ? $result['data'] : [];
77             } else {
78                 $ret['message'] = isset($result['msg']) ? $result['msg'] : '未知错误';
79             }
80         } catch (\Exception $e) {
81             $ret['message'] = $e->getMessage().$this->_api_error_msg;
82         }
83         return $ret;
84     }
85 }

 

猜你喜欢

转载自www.cnblogs.com/chming/p/12164607.html