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 请求效果图
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现