/**
* 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);