Ejemplo n.º 1
0
    /**
     * Make an HTTP request
     *
     * @return string API results
     * @ignore
     */
    private static function _http($url, $method, $postfields = NULL, $headers = array(), $timeout = 0)
    {
        if (! self::test()) {
            echo '您的服务器不支持 PHP 的 Curl 模块,请安装或与服务器管理员联系。';
            exit;
        }
		$timeout = $timeout ? $timeout : self::$timeout;
        self::$http_info = array();
        $ci = curl_init();
        /* Curl settings */
        curl_setopt($ci, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
        curl_setopt($ci, CURLOPT_USERAGENT, self::$useragent);
        curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, self::$connecttimeout);
        curl_setopt($ci, CURLOPT_TIMEOUT, $timeout);
        curl_setopt($ci, CURLOPT_RETURNTRANSFER, TRUE);
        curl_setopt($ci, CURLOPT_ENCODING, "");

        curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, self::$ssl_verifypeer);
        curl_setopt($ci, CURLOPT_SSL_VERIFYHOST, (self::$ssl_verifypeer == true) ? 2 : false);

        curl_setopt($ci, CURLOPT_HEADERFUNCTION, 'WeiXinApiRequest::_getHeader');
        curl_setopt($ci, CURLOPT_HEADER, FALSE);

        if (self::POST == $method) {
            curl_setopt($ci, CURLOPT_POST, TRUE);
            if (!empty($postfields)) {
                curl_setopt($ci, CURLOPT_POSTFIELDS, $postfields);
                //self::$postdata = $postfields;
            }
        }

        curl_setopt($ci, CURLOPT_URL, $url );
        curl_setopt($ci, CURLOPT_HTTPHEADER, $headers );
        curl_setopt($ci, CURLINFO_HEADER_OUT, TRUE );

        self::$response = $response = curl_exec($ci);
        self::$http_code = curl_getinfo($ci, CURLINFO_HTTP_CODE);
        self::$http_info = array_merge(self::$http_info, curl_getinfo($ci));

        if (self::$debug) {
            echo "=====post data======\r\n";
            var_dump($postfields);

            echo '=====info====='."\r\n";
            print_r( curl_getinfo($ci) );

            echo '=====$response====='."\r\n";
            print_r( $response );

            echo '=====error====='."\r\n";
            print_r( curl_error($ci) );
        }
        curl_close($ci);
        return $response;
    }