php的curl请求封装

/**
 * php发送http请求
 * @param array $params 相关请求参数
 * @param booble $is_json  数据格式,默认false为数组,true为json
 * @return string
 */
function _curl(array $params,$is_json=false )
{
    $_data = $params['data'] ?? null;
    $url = $params['url'];
    $defaults = [
        CURLOPT_HEADER => 0,
        CURLOPT_URL => $params['url'],
        CURLOPT_FRESH_CONNECT => 1,
        CURLOPT_RETURNTRANSFER => 1,
        CURLOPT_FORBID_REUSE => 1,
        CURLOPT_TIMEOUT => 60,
        CURLOPT_SSL_VERIFYHOST=>2,
        CURLOPT_SSL_VERIFYPEER=>0,
    ];
    switch ($params['method'])
    {
        case 'post':
            $defaults[CURLOPT_CUSTOMREQUEST] = "POST";
            break;
        case 'get':
            $defaults[CURLOPT_CUSTOMREQUEST] = "GET";
            break;
        case 'put':
            $defaults[CURLOPT_CUSTOMREQUEST] = "PUT";
            break;
        case 'delete':
            $defaults[CURLOPT_CUSTOMREQUEST] = "DELETE";
            break;
    }
    if ($_data && $params['method']!='get') {
        if($is_json){
            $defaults[CURLOPT_POSTFIELDS] = json_encode($_data);
            $defaults[CURLOPT_HTTPHEADER] = [
                'Content-Type: application/json',
                'Content-Length: ' . strlen(json_encode($_data))
            ];
        }else{
            $defaults[CURLOPT_POSTFIELDS] = $_data;
        }
    }elseif($params['method']=='get'){
        if(is_array($_data)){
            $param = '';
            foreach ($_data as $k=>$v){
                $param .= $k."=".$v."&";
            }
            $param = rtrim($param ,"&");
            if(!strpos($url,"?")){
                $url .= "?".$param;
            }else{
                $url .= "&".$param;
            }
        }
        $defaults[CURLOPT_URL] = $url;
    }


    $ch = curl_init();
    curl_setopt_array($ch, ($defaults));

    $result = curl_exec($ch);
    curl_close($ch);

    return $result;
}
/**
 * api地址获取
 * @param integer $type 标识
 * @return string
 */
function _apiBaseUrl($type){
    $url = config("api.api_url_host");//接口域名配置文件
    switch ($type){
        case 1:
            $url .= '';//接口请求路由前缀地址
            break;
        case 99:
            $url .= '';//接口请求路由前缀地址
            break;
        case 2:
            $url .= '';//接口请求路由前缀地址
            break;
        default:
            break;
    }
    return $url;
}

控制层请求实例

        $params['method'] = 'get';//请求方法
        $params['url'] = _apiBaseUrl(1).'';//引号内为路由
        $params['data'] = [
            'pageNo' => $pageNo,
            'pageSize' => $pageSize ,
        ];//参数
        $result = json_decode(_curl($params),true);

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值