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 }
来源:https://www.cnblogs.com/chming/p/12164607.html