$value){ if($i == 1) { if(mb_stripos($url, '?') !== FALSE) { $url .= "&" ."$key=" . urlencode($value); } else { $url .= "?" ."$key=" . urlencode($value); } } else { $url .= "&" ."$key=" . urlencode($value); } $i ++; } } curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_FAILONERROR, false); if(empty($header)){ curl_setopt($ch, CURLOPT_HEADER, false); }else{ curl_setopt($ch,CURLOPT_HTTPHEADER, $header); } curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); //https ignore ssl check ? if(strlen($url) > 5 && strtolower(substr($url,0,5)) == "https" ){ curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); } $reponse = curl_exec($ch); if (curl_errno($ch)){ throw new \Exception(curl_error($ch),0); }else{ $httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); if (200 !== $httpStatusCode){ throw new \Exception($reponse,$httpStatusCode); } } curl_close($ch); return $reponse; } public static function curlPost($url, $postFields = null, $header = [], $hasFile = false) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_FAILONERROR, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //https 请求 if(strlen($url) > 5 && strtolower(substr($url,0,5)) == "https" ) { curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); } curl_setopt($ch, CURLOPT_POST, true); if (is_array($postFields) && 0 < count($postFields)) { if($hasFile) { // CURLOPT_POSTFIELDS 值为数组则以multipart/form-data形式提交 curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields); } else { $jsonHeader = array("Content-Type: application/json; charset=utf-8", "Content-Length:".strlen(json_encode($postFields))); $header = array_merge($header, $jsonHeader); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($postFields)); } if(!empty($header)) { curl_setopt($ch,CURLOPT_HTTPHEADER, $header); } } $reponse = curl_exec($ch); if (curl_errno($ch)) { throw new \Exception(curl_error($ch),0); } else { $httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); if (200 !== $httpStatusCode) { throw new \Exception($reponse,$httpStatusCode); } } curl_close($ch); return $reponse; } public static function curlDelete($url, $postFields = null) { $ch = curl_init(); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE'); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_FAILONERROR, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //https 请求 if(strlen($url) > 5 && strtolower(substr($url,0,5)) == "https" ) { curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); } if (is_array($postFields) && 0 < count($postFields)) { $header = array("Content-Type: application/json; charset=utf-8", "Content-Length:".strlen(json_encode($postFields))); curl_setopt($ch,CURLOPT_HTTPHEADER,$header); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($postFields)); } $reponse = curl_exec($ch); if (curl_errno($ch)) { throw new \Exception(curl_error($ch),0); } else { $httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); if (200 !== $httpStatusCode) { throw new \Exception($reponse,$httpStatusCode); } } curl_close($ch); return $reponse; } //POST请求的结果解析 public static function decodePostResult($url, $param, $header = [], $hasFile = false) { $resp = []; try { $resp = json_decode(self::curlPost($url, $param, $header, $hasFile), true); $resp['resp_status'] = empty($resp) ? false :true; } catch (\Exception $e) { $resp = json_decode($e->getMessage(), true); $resp['resp_status'] = false; } return $resp; } //GET请求结果解析 public static function decodeGetResult($url, $header=[], $param = []) { $resp = []; try { $resp = json_decode(self::curlGet($url, $param, $header), true); $resp['resp_status'] = empty($resp) ? false :true; } catch (\Exception $e) { $resp = json_decode($e->getMessage(), true); $resp['resp_status'] = false; } return $resp; } }