curl模擬請求常用參數
阿新 • • 發佈:2017-12-29
accep quest 輸出 verify 會話 直接 delete 信息 返回
封裝一個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;
curl模擬請求常用參數