php教程

curl get post请求封装函数示例

我的站长站 2023-08-09 人阅读

本文分享PHP中CURL封装的GET、post通用请求函数,包含参数拼接、请求头配置、超时控制、HTTPS兼容、返回数据处理及异常捕获,代码可直接复用,适用于接口调用、数据请求、内容采集等各类开发场景。

get请求函数封装

function getUrl($url, $header = []) 
{ 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_HTTPGET, true); 
    if ($header) { 
        curl_setopt($ch, CURLOPT_HTTPHEADER, $header); 
    } 
    curl_setopt($ch, CURLOPT_TIMEOUT, 30); //设置超时时间:30s 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); //忽略ssl检测 
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //1 或 TRUE 将curl_exec()获取的信息以字符串返回,而不是直接输出。- 
    curl_setopt($ch, CURLINFO_HEADER_OUT, true); //TRUE 时追踪句柄的请求字符串,从 PHP 5.1.3 开始可用。这个很关键,就是允许你查看请求header 
    $output = curl_exec($ch); 
    if (!$output) { 
//        echo "request $url fail:", (array)curl_error($ch); //记录日志 
    } 
    curl_close($ch); 
//    echo "request $url success:" . json_encode(array($url, $header, $output), true); //记录日志 
    return $output; 
}

del请求函数封装

function delUrl($url, $header = []) { 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE'); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); //为true,则会跟踪爬取重定向页面,否则,不会跟踪重定向页面 
    curl_setopt($ch, CURLOPT_HTTPHEADER, $header); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 30); //设置超时时间:30s 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); //忽略ssl检测 
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //1 或 TRUE 将curl_exec()获取的信息以字符串返回,而不是直接输出。- 
    curl_setopt($ch, CURLINFO_HEADER_OUT, true); //TRUE 时追踪句柄的请求字符串,从 PHP 5.1.3 开始可用。这个很关键,就是允许你查看请求header 
    curl_setopt($ch, CURLOPT_URL, $url); 
    $output = curl_exec($ch); 
    if (!$output) { 
//        echo "request $url fail:", (array)curl_error($ch); //记录日志 
    } 
    curl_close($ch); 
//    echo "request $url success:" . json_encode(array($url, $header, $output), true); //记录日志 
    return $output; 
}

put请求函数封装

function putUrl($url, $data = [], $header = []) { 
    $ch = curl_init(); 
    if (!emptyempty($data)) { 
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data); //定义提交的数据 
    } 
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT'); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); //为true,则会跟踪爬取重定向页面,否则,不会跟踪重定向页面 
    curl_setopt($ch, CURLOPT_HTTPHEADER, $header); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 30); //设置超时时间:30s 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); //忽略ssl检测 
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //1 或 TRUE 将curl_exec()获取的信息以字符串返回,而不是直接输出。- 
    curl_setopt($ch, CURLINFO_HEADER_OUT, true); //TRUE 时追踪句柄的请求字符串,从 PHP 5.1.3 开始可用。这个很关键,就是允许你查看请求header 
    curl_setopt($ch, CURLOPT_URL, $url); 
    $output = curl_exec($ch); 
    if (!$output) { 
//        echo "request $url fail:", (array)curl_error($ch); //记录日志 
    } 
    curl_close($ch); 
//    echo "request $url success:" . json_encode(array($url, $header, $output), true); //记录日志 
    return $output; 
}

post请求函数封装

function postUrl($url, $data, $header = []) 
{ 
    $ch = curl_init(); 
    if (!emptyempty($data)) { 
        curl_setopt($ch, CURLOPT_POST,true); 
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 
    } 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); //为true,则会跟踪爬取重定向页面,否则,不会跟踪重定向页面 
    curl_setopt($ch, CURLOPT_HTTPHEADER, $header); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 30); //设置超时时间:30s 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); //忽略ssl检测 
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //1 或 TRUE 将curl_exec()获取的信息以字符串返回,而不是直接输出。- 
    curl_setopt($ch, CURLINFO_HEADER_OUT, true); //TRUE 时追踪句柄的请求字符串,从 PHP 5.1.3 开始可用。这个很关键,就是允许你查看请求header 
    curl_setopt($ch, CURLOPT_URL, $url); 
    $output = curl_exec($ch); 
    if (!$output) { 
//        echo "request $url fail:", (array)curl_error($ch); //记录日志 
    } 
    curl_close($ch); 
//    echo "request $url success:" . json_encode(array($url, $header, $output), true); //记录日志 
    return $output; 
}

post JSON请求函数封装

function postJsonUrl($url, $data, $header = []) 
{ 
    $data = json_encode($data); 
    $ch = curl_init(); 
    if (!emptyempty($data)) { 
        curl_setopt($ch, CURLOPT_POST,true); 
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 
    } 
    $header[]='Content-Type: application/json; charset=utf-8'; 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); //为true,则会跟踪爬取重定向页面,否则,不会跟踪重定向页面 
    curl_setopt($ch, CURLOPT_HTTPHEADER, $header); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 30); //设置超时时间:30s 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); //忽略ssl检测 
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //1 或 TRUE 将curl_exec()获取的信息以字符串返回,而不是直接输出。- 
    curl_setopt($ch, CURLINFO_HEADER_OUT, true); //TRUE 时追踪句柄的请求字符串,从 PHP 5.1.3 开始可用。这个很关键,就是允许你查看请求header 
    curl_setopt($ch, CURLOPT_URL, $url); 
    $output = curl_exec($ch); 
    if (!$output) { 
//        echo "request $url fail:", (array)curl_error($ch); //记录日志 
    } 
    curl_close($ch); 
//    echo "request $url success:" . json_encode(array($url, $header, $output), true); //记录日志 
    return $output; 
}


php教程标签