如題,curl各種操作,封裝為一個方法,一勞永逸
話不多說,直接上代;不能使用,提棍找我
1 <?php 2 /** 3 * 發送http請求 4 * @param string $url 請求地址 5 * @param string $method http方法(GET POST PUT DELETE) 6 * @param array $data http請求數據 7 * @param array $header http請求頭 8 * @param Int $type 請求數據類型 0-array 1-jason 9 * @return string|bool 10 */ 11 function send_request($url, $method = "POST", $data = array(), $header = array(), $type = '0') { 12 //檢查地址是否為空 13 if (empty($url)) { 14 return false; 15 } 16 //控制請求方法范圍 17 $httpMethod = array('GET', 'POST', 'PUT', 'DELETE'); 18 $method = strtoupper($method); 19 if (!in_array($method, $httpMethod)) { 20 return false; 21 } 22 //請求頭初始化 23 $request_headers = array(); 24 $User_Agent = 'Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.43 Safari/537.31'; 25 $request_headers[] = 'User-Agent: '. $User_Agent; 26 if($header){ 27 foreach ($header as $v) { 28 $request_headers[] = $v; 29 } 30 } 31 32 $request_headers[] = 'Accept: text/html,application/json,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'; 33 switch ($method) { 34 case "POST": 35 $request_headers[] = "X-HTTP-Method-Override: POST"; 36 break; 37 case "PUT": 38 $request_headers[] = "X-HTTP-Method-Override: PUT"; 39 break; 40 case "DELETE": 41 $request_headers[] = "X-HTTP-Method-Override: DELETE"; 42 break; 43 default: 44 } 45 //發送http請求 46 $ch = curl_init(); 47 curl_setopt($ch, CURLOPT_URL, $url); 48 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 49 curl_setopt($ch, CURLOPT_HEADER, false); 50 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);//https 51 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); 52 curl_setopt($ch, CURLOPT_HTTPHEADER, $request_headers); 53 switch ($method) { 54 case "POST": 55 curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); 56 break; 57 case "PUT": 58 curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT"); 59 break; 60 case "DELETE": 61 curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE"); 62 break; 63 default: 64 } 65 66 //格式化發送數據 67 if($data) { 68 if ($type) { 69 $dataValue = json_encode($data,JSON_UNESCAPED_UNICODE); 70 }else{ 71 $dataValue = http_build_query($data); 72 } 73 curl_setopt($ch, CURLOPT_POSTFIELDS, $dataValue); 74 } 75 76 curl_setopt($ch, CURLOPT_TIMEOUT, 50); 77 //發送請求獲取返回響應 78 $result['data'] = curl_exec($ch); 79 $result['httpCode'] = curl_getinfo($ch,CURLINFO_HTTP_CODE); 80 if(strlen(curl_error($ch))>1){ 81 $result = false; 82 } 83 84 curl_close($ch); 85 return $result; 86 } 87 88 ?>