* @date 2017/03/22 15:32 */ class HttpService { /** * HTTP GET 请求 * @param string $url 请求的URL地址 * @param array $data GET参数 * @param int $second 设置超时时间(默认30秒) * @param array $header 请求Header信息 * @return bool|string */ public static function get($url, $data = array(), $second = 30, $header = []) { return self::curl_request($url, $data, 'GET', $second, $header); } /** * POST 请求(支持文件上传) * @param string $url HTTP请求URL地址 * @param array|string $data POST提交的数据 * @param int $second 请求超时时间 * @param array $header 请求Header信息 * @return bool|string */ public static function post($url, $data = [], $second = 30, $header = []) { return self::curl_request($url, $data, 'POST', $second, $header); } /** * POST 请求(支持文件上传) * @param string $url HTTP请求URL地址 * @param array|string $data POST提交的数据 * @param int $second 请求超时时间 * @param array $header 请求Header信息 * @return bool|string */ public static function delete($url, $data = [], $second = 30, $header = []) { return self::curl_request($url, $data, 'DELETE', $second, $header); } /** * put 请求(支持文件上传) * @param string $url HTTP请求URL地址 * @param array|string $data POST提交的数据 * @param int $second 请求超时时间 * @param array $header 请求Header信息 * @return bool|string */ public static function put($url, $data = [], $second = 30, $header = []) { return self::curl_request($url, $data, 'PUT', $second, $header); } private static function curl_request($url, $data = array(), $method = 'GET', $second = 30, $header = []) { if (!empty($data) && $method == 'GET') { $url .= (stripos($url, '?') === false ? '?' : '&'); $url .= (is_array($data) ? http_build_query($data) : $data); } $curl = curl_init(); curl_setopt($curl, CURLOPT_TIMEOUT, $second); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLINFO_HEADER_OUT, TRUE); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method); self::_setSsl($curl, $url); if (!empty($data)) { curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($data)); } !empty($header) && curl_setopt($curl, CURLOPT_HTTPHEADER, $header); $content = curl_exec($curl); $status = curl_getinfo($curl); curl_close($curl); //return (intval($status["http_code"]) === 200) ? json_decode($content,true) : false; $result = json_decode($content, true); return json_last_error() == JSON_ERROR_NONE ? $result : $content; } /** * 设置SSL参数 * @param $curl * @param string $url */ private static function _setSsl(&$curl, $url) { if (stripos($url, "https") === 0) { curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($curl, CURLOPT_SSLVERSION, 1); } } }