curl模擬請求常用參數


封裝一個curl模擬瀏覽器請求的函數,如下:
/**
 * curl模擬瀏覽器請求
 * @param unknown $url        請求的地址
 * @param array $params        請求地址所需要的參數
 * @param string $method     請求的類型
 * @param array $headers    http請求頭
 * @return string|mixed
 */
function curlRequest($url, array $params, $method='POST', array $headers=array())
{    
    // 1.初始化一個curl會話資源
    $ch = curl_init();
 
    // 2.設置curl會話的選項
    curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);    // 強制使用 HTTP/1.0
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);    // 發起連接前等待超時的時間,如果設置為0,則無限等待 
    curl_setopt($ch, CURLOPT_TIMEOUT, 30);    // 設置curl允許執行的最長秒數
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);    // 是否將curl_exec()獲取的信息返回,而不是直接輸出
    curl_setopt($ch, CURLOPT_ENCODING, 'gzip');    // 設置HTTP請求頭中"Accept-Encoding: "的值
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);    // 啟用時會將服務器返回的"Location: "放在header中遞歸的返回給服務器
    curl_setopt($ch, CURLOPT_MAXREDIRS, 5);    // 設置HTTP重定向的最大數量,這個選項是和CURLOPT_FOLLOWLOCATION一起使用的
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);    // 是否需要進行服務端的SSL證書驗證
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);    // 是否驗證服務器SSL證書中的公用名
    curl_setopt($ch, CURLOPT_HEADER, false);    // 是否抓取頭文件的信息
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);        // 設置HTTP請求頭
    curl_setopt($ch, CURLINFO_HEADER_OUT, true);
 
    switch (strtoupper($method)) {
        case 'POST':
            curl_setopt($ch, CURLOPT_POST, true);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
            break;
 
        case 'GET':
            $url = "{$url}?" . http_build_query($params);
            break;
 
        case 'DELETE':
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
            $url = "{$url}?" . http_build_query($params);
            break;
 
        default:
            return 'invalid request method';
    }
 
    curl_setopt($ch, CURLOPT_URL, $url);    // 設置需要請求的URL地址,也可以在 curl_init()函數中設置
 
    // 3.執行curl會話
    $response = curl_exec($ch);
 
    // 4.關閉curl會話,釋放資源
    curl_close($ch);
 
    return $response;
}
 
函數調用方式如下:
$url = 'http://demo.dev/test';
$params = array('id'=>1,'name'=>'zpt');
$res = curlRequest($url,$params);
echo $res;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM