Yii2 使用Curl

 

composer安装curl

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

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

等待安装即可

安装完之后curl的位置

项目根目录/vendor/linslin

有linslin就是安装成功了

Yii2 使用Curl

<?php
	namespace server\api;

	use yii;
	use yii\helpers\Json;
	use linslin\yii2\curl\Curl;
	/**
	* API基础类
	*/
	class BaseApi
	{
		const API_POST = 'POST';//POST 请求
		const API_GET = 'GET';//GET 请求
		const API_HEAD = 'HEAD';// HEAD 请求
		const API_PUT = 'PUT';// PUT 请求
		const API_DELETE = 'DELETE'; // DELETE 请求


		/**
		* 调用脚本接口
		* @param $url 请求地址
		* @param $params 接口参数
		* @param $type 接口请求方式
		* @return array ['error' => 1, 'msg' => '错误信息', 'data' => '数据']
		*/
		public function callApi($url, $params, $type = self::API_POST)
		{

		 if (!$url) {
		     return [
		         'error' => 1,
		         'message' => '脚本请求地址为空',
		     ];
		 }

		 $ret = ['error' => 1];
		 try {
		     $curl = new Curl();
		     // 请求方式
		     $curl = $curl->setHeaders([
		         'Content-Type' => 'application/json',
		     ]);
		     // 设置请求时间120秒
		     $curl->setOption(CURLOPT_TIMEOUT, 120);

		     switch ($type) {
		         case self::API_GET:
		             if (!empty($params)) {
		                 $url .= '?'.http_build_query($params);
		             }
		             $response = $curl->get($url);
		             break;

		         case self::API_POST:
		             $response = $curl->setRawPostData(Json::encode($params))->post($url);
		             break;

		         case self::API_PUT:
		             $response = $curl->setRawPostData(Json::encode($params))->put($url);
		             break;

		         case self::API_DELETE:
		             $response = $curl->setRawPostData(Json::encode($params))->delete($url);
		             break;

		         default:
		             $response = $curl->setRawPostData(Json::encode($params))->post($url);
		             break;
		     }

		     $result = $response ? Json::decode($response) : [];
		     if (isset($result['result']) && $result['result'] == 'success') {
		         $ret['error'] = 0;
		         $ret['message'] = isset($result['msg']) ? $result['msg'] : 'successful';
		         $ret['data'] = isset($result['data']) ? $result['data'] : [];
		     } else {
		         $ret['message'] = isset($result['msg']) ? $result['msg'] : '未知错误';
		     }
		 } catch (\Exception $e) {
		     $ret['message'] = $e->getMessage().$this->_api_error_msg;
		 }
		 return $ret;
		}
	}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值