curl get请求接口
控制器进行请求
// 请求的网址 $url='https://restapi.amap.com/v3/geocode/geo'; // 请求的参数 $data=[ 'address'=>$address, 'output'=>'JSON' , 'key'=>'57f43caedd2e585c74778b11238f721d' ]; // 调用 $res=Curl::get($url,$data); print_r($res['geocodes'][0]);
封装get 请求(注销的是原代吗,请求到的是一个string)所以这里我接入了一个菜鸟教程中的curl请求
https://www.runoob.com/php/php-ref-curl.html
class Curl { /** * @brief get请求 * @param $url 请求的url * @param array $param 请求的参数 * @param int $timeout 超时时间 * @param int $log 是否启用日志 * @return mixed */ public static function get($url, $param=array(), $timeout=10, $log=1) { //将参数进行合并 if (is_array($param)) { $url = $url . '?' . http_build_query($param); } $headerArray =array("Content-type:application/json;","Accept:application/json"); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch,CURLOPT_HTTPHEADER,$headerArray); $output = curl_exec($ch); curl_close($ch); $output = json_decode($output,true); return $output; // curl_setopt($ch, CURLOPT_URL, $url); // curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); // curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); // 允许 cURL 函数执行的最长秒数 // $data = curl_exec($ch); // if ($log) { // $data .= "\r\n"; // $data .= self::logInfo($ch, $param, $data); // } // curl_close($ch); // $output = json_decode($data,true); //// 数据返回 // return $output; } /** * @brief post请求 * @param $url 请求的url地址 * @param array $param 请求的参数 * @param int $log 是否启用日志 * @return mixed */ public static function post($url, $param=array(), $header=array(), $timeout=10, $log=1) { $ch = curl_init(); if (is_array($param)) { $urlparam = http_build_query($param); } else if (is_string($param)) { //json字符串 $urlparam = $param; } curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); //设置超时时间 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //返回原生的(Raw)输出 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($ch, CURLOPT_POST, 1); //POST curl_setopt($ch, CURLOPT_POSTFIELDS, $urlparam); //post数据 if ($header) { curl_setopt($ch, CURLOPT_HTTPHEADER, $header); } $data = curl_exec($ch); if ($log) { $data .= "\r\n"; $data .= self::logInfo($ch, $param, $data); } curl_close($ch); return $data; } /** * 请求信息记录日志 * @param $ch curl句柄 * @param $request 请求参数 * @param $response 响应结果 */ private static function logInfo($ch, $request, $response) { $info = curl_getinfo($ch); $resultFormat = "耗时:[%s] 返回状态:[%s] 请求的url[%s] 请求参数:[%s] 响应结果:[%s] 大小:[%s]kb 速度:[%s]kb/s"; $resultLogMsg = sprintf($resultFormat, $info['total_time'], $info['http_code'], $info['url'], var_export($request,true),var_export($response,true), $info['size_download']/1024, $info['speed_download']/1024); return $resultLogMsg; }
get 请求效果图