- get請求
/* * php訪問url路徑,get請求 */ function curl_file_get_contents($durl){ // header傳送格式 $headers = array( "token:1111111111111", "over_time:22222222222", ); // 初始化 $curl = curl_init(); // 設置url路徑 curl_setopt($curl, CURLOPT_URL, $durl); // 將 curl_exec()獲取的信息以文件流的形式返回,而不是直接輸出。 curl_setopt($curl, CURLOPT_RETURNTRANSFER, true) ; // 在啟用 CURLOPT_RETURNTRANSFER 時候將獲取數據返回 curl_setopt($curl, CURLOPT_BINARYTRANSFER, true) ; // 添加頭信息 curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); // CURLINFO_HEADER_OUT選項可以拿到請求頭信息 curl_setopt($curl, CURLINFO_HEADER_OUT, true); // 不驗證SSL curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); // 執行 $data = curl_exec($curl); // 打印請求頭信息 // echo curl_getinfo($curl, CURLINFO_HEADER_OUT); // 關閉連接 curl_close($curl); // 返回數據 return $data; }
- post請求
/* * php訪問url路徑,post請求 * * durl 路徑url * post_data array() post參數數據 */ public function curl_file_post_contents($durl, $post_data){ // header傳送格式 $headers = array( "token:1111111111111", "over_time:22222222222", ); //初始化 $curl = curl_init(); //設置抓取的url curl_setopt($curl, CURLOPT_URL, $durl); //設置頭文件的信息作為數據流輸出 curl_setopt($curl, CURLOPT_HEADER, false); //設置獲取的信息以文件流的形式返回,而不是直接輸出。 curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); //設置post方式提交 curl_setopt($curl, CURLOPT_POST, true); // 設置post請求參數 curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data); // 添加頭信息 curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); // CURLINFO_HEADER_OUT選項可以拿到請求頭信息 curl_setopt($curl, CURLINFO_HEADER_OUT, true); // 不驗證SSL curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); //執行命令 $data = curl_exec($curl); // 打印請求頭信息 // echo curl_getinfo($curl, CURLINFO_HEADER_OUT); //關閉URL請求 curl_close($curl); //顯示獲得的數據 return $data; }
注:調用后可以通過json_decode來解析返回結果:如:
$data= $this->curl_file_post_contents($dataurl, $post_data);
$dataarr = json_decode($data, true);
補充:
使用post請求傳遞多維數組時報"Array to string conversion"錯誤
解決辦法:
使用 http_build_query() 函數處理一下參數。
改為:
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post_data));