src/Contracts/HttpService.php
protected static function request($method, $url, $options = [])
    {
        $curl = curl_init();
        // GET参数设置
        if (!empty($options['query'])) {
            $url .= stripos($url, '?') !== false ? '&' : '?' . http_build_query($options['query']);
        }
        // POST数据设置
        if (strtolower($method) === 'post') {
            curl_setopt($curl, CURLOPT_POST, true);
            curl_setopt($curl, CURLOPT_POSTFIELDS, self::build($options['data']));
        }
        // CURL头信息设置
        if (!empty($options['headers'])) {
            curl_setopt($curl, CURLOPT_HTTPHEADER, $options['headers']);
        }
        // 证书文件设置
        if (!empty($options['ssl_cer'])) {
            if (file_exists($options['ssl_cer'])) {
                curl_setopt($curl, CURLOPT_SSLCERTTYPE, 'PEM');
                curl_setopt($curl, CURLOPT_SSLCERT, $options['ssl_cer']);
            } else {
                throw new InvalidArgumentException("Certificate files that do not exist. --- [{$options['ssl_cer']}]");
            }
        }
        if (!empty($options['ssl_key'])) {
            if (file_exists($options['ssl_key'])) {
                curl_setopt($curl, CURLOPT_SSLKEYTYPE, 'PEM');
                curl_setopt($curl, CURLOPT_SSLKEY, $options['ssl_key']);
            } else {
                throw new InvalidArgumentException("Certificate files that do not exist. --- [{$options['ssl_key']}]");
            }
        }
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_TIMEOUT, 60);
        curl_setopt($curl, CURLOPT_HEADER, false);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        list($content, $status) = [curl_exec($curl), curl_getinfo($curl), curl_close($curl)];
        return (intval($status["http_code"]) === 200) ? $content : false;
    }
protected static function request($method, $url, $options = [])
    {
        $curl = curl_init();
        // GET参数设置
        if (!empty($options['query'])) {
            $url .= stripos($url, '?') !== false ? '&' : '?' . http_build_query($options['query']);
        }
        // POST数据设置
        if (strtolower($method) === 'post') {
            curl_setopt($curl, CURLOPT_POST, true);
            curl_setopt($curl, CURLOPT_POSTFIELDS, self::build($options['data']));
        }
        // CURL头信息设置
        if (!empty($options['headers'])) {
            curl_setopt($curl, CURLOPT_HTTPHEADER, $options['headers']);
        }
        // 证书文件设置
        if (!empty($options['ssl_cer'])) {
            if (file_exists($options['ssl_cer'])) {
                curl_setopt($curl, CURLOPT_SSLCERTTYPE, 'PEM');
                curl_setopt($curl, CURLOPT_SSLCERT, $options['ssl_cer']);
            } else {
                throw new InvalidArgumentException("Certificate files that do not exist. --- [{$options['ssl_cer']}]");
            }
        }
        if (!empty($options['ssl_key'])) {
            if (file_exists($options['ssl_key'])) {
                curl_setopt($curl, CURLOPT_SSLKEYTYPE, 'PEM');
                curl_setopt($curl, CURLOPT_SSLKEY, $options['ssl_key']);
            } else {
                throw new InvalidArgumentException("Certificate files that do not exist. --- [{$options['ssl_key']}]");
            }
        }
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_TIMEOUT, 60);
        curl_setopt($curl, CURLOPT_HEADER, false);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        list($content, $status) = [curl_exec($curl), curl_getinfo($curl), curl_close($curl)];
        return (intval($status["http_code"]) === 200) ? $content : false;
    }
protected static function request ( $ method , $ url , $ options = [ ] ) { $ curl = curl_init ( ) ; // GET参数设置 if ( ! empty ( $ options [ 'query' ] ) ) { $ url .= stripos ( $ url , '?' ) !== false ? '&' : '?' . http_build_query ( $ options [ 'query' ] ) ; } // POST数据设置 if ( strtolower ( $ method ) === 'post' ) { curl_setopt ( $ curl , CURLOPT_POST , true ) ; curl_setopt ( $ curl , CURLOPT_POSTFIELDS , self :: build ( $ options [ 'data' ] ) ) ; } // CURL头信息设置 if ( ! empty ( $ options [ 'headers' ] ) ) { curl_setopt ( $ curl , CURLOPT_HTTPHEADER , $ options [ 'headers' ] ) ; } // 证书文件设置 if ( ! empty ( $ options [ 'ssl_cer' ] ) ) { if ( file_exists ( $ options [ 'ssl_cer' ] ) ) { curl_setopt ( $ curl , CURLOPT_SSLCERTTYPE , 'PEM' ) ; curl_setopt ( $ curl , CURLOPT_SSLCERT , $ options [ 'ssl_cer' ] ) ; } else { throw new InvalidArgumentException ( "Certificate files that do not exist. --- [{$options['ssl_cer']}]" ) ; } } if ( ! empty ( $ options [ 'ssl_key' ] ) ) { if ( file_exists ( $ options [ 'ssl_key' ] ) ) { curl_setopt ( $ curl , CURLOPT_SSLKEYTYPE , 'PEM' ) ; curl_setopt ( $ curl , CURLOPT_SSLKEY , $ options [ 'ssl_key' ] ) ; } else { throw new InvalidArgumentException ( "Certificate files that do not exist. --- [{$options['ssl_key']}]" ) ; } } curl_setopt ( $ curl , CURLOPT_URL , $ url ) ; curl_setopt ( $ curl , CURLOPT_TIMEOUT , 60 ) ; curl_setopt ( $ curl , CURLOPT_HEADER , false ) ; curl_setopt ( $ curl , CURLOPT_SSL_VERIFYPEER , false ) ; curl_setopt ( $ curl , CURLOPT_SSL_VERIFYHOST , false ) ; curl_setopt ( $ curl , CURLOPT_RETURNTRANSFER , true ) ; list ( $ content , $ status ) = [ curl_exec ( $ curl ) , curl_getinfo ( $ curl ) , curl_close ( $ curl ) ] ; return ( intval ( $ status [ "http_code" ] ) === 200 ) ? $ content : false ; }
CURL模拟网络请求
@param string $method 请求方法
@param string $url 请求方法
@param array $options 请求参数[headers,data,ssl_cer,ssl_key]
@return bool|string
CURL模拟网络请求