⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 http.php.tmp

📁 PHP 知识管理系统(基于树结构的知识管理系统), 英文原版的PHP源码。
💻 TMP
📖 第 1 页 / 共 2 页
字号:
<?php/** * This file contains the code for a HTTP transport layer. * * PHP versions 4 and 5 * * LICENSE: This source file is subject to version 2.02 of the PHP license, * that is bundled with this package in the file LICENSE, and is available at * through the world-wide-web at http://www.php.net/license/2_02.txt.  If you * did not receive a copy of the PHP license and are unable to obtain it * through the world-wide-web, please send a note to license@php.net so we can * mail you a copy immediately. * * @category   Web Services * @package    SOAP * @author     Shane Caraveo <Shane@Caraveo.com> * @copyright  2003-2005 The PHP Group * @license    http://www.php.net/license/2_02.txt  PHP License 2.02 * @link       http://pear.php.net/package/SOAP *//** * HTTP Transport class * * @package  SOAP * @category Web_Services *//** * Needed Classes */require_once 'SOAP/Base.php';/** *  HTTP Transport for SOAP * * @access public * @package SOAP * @author Shane Caraveo <shane@php.net> */class SOAP_Transport_HTTP extends SOAP_Base{    /**     * Basic Auth string.     *     * @var array     */    var $headers = array();    /**     * Cookies.     *     * @var array     */    var $cookies;    /**     * Connection timeout in seconds. 0 = none.     *     * @var integer     */    var $timeout = 4;    /**     * Array containing urlparts - parse_url().     *     * @var mixed     */    var $urlparts = null;    /**     * Connection endpoint - URL.     *     * @var string     */    var $url = '';    /**     * Incoming payload.     *     * @var string     */    var $incoming_payload = '';    /**     * HTTP-Request User-Agent.     *     * @var string     */    var $_userAgent = SOAP_LIBRARY_NAME;    /**     * HTTP encoding.     *     * @var string     */    var $encoding = SOAP_DEFAULT_ENCODING;    /**     * HTTP-Response Content-Type encoding.     * We assume UTF-8 if no encoding is set.     *     * @var string     */    var $result_encoding = 'UTF-8';    /**     * HTTP-Response Content-Type.     */    var $result_content_type;    var $result_headers = array();    var $result_cookies = array();    /**     * SOAP_Transport_HTTP Constructor     *     * @access public     *     * @param string $url       HTTP url to SOAP endpoint.     * @param string $encoding  Encoding to use.     */    function SOAP_Transport_HTTP($url, $encoding = SOAP_DEFAULT_ENCODING)    {        parent::SOAP_Base('HTTP');        $this->urlparts = @parse_url($url);        $this->url = $url;        $this->encoding = $encoding;    }    /**     * Sends and receives SOAP data.     *     * @param string  Outgoing POST data.     * @param array   Options.     *     * @return string|SOAP_Fault     * @access public     */    function send($msg, $options = null)    {        if (!$this->_validateUrl()) {            return $this->fault;        }        if (isset($options['timeout'])) {            $this->timeout = (int)$options['timeout'];        }        if (strcasecmp($this->urlparts['scheme'], 'HTTP') == 0) {            return $this->_sendHTTP($msg, $options);        } elseif (strcasecmp($this->urlparts['scheme'], 'HTTPS') == 0) {            return $this->_sendHTTPS($msg, $options);        }        return $this->_raiseSoapFault('Invalid url scheme ' . $this->url);    }    /**     * Sets data for HTTP authentication, creates authorization header.     *     * @param string $username   Username.     * @param string $password   Response data, minus HTTP headers.     *     * @access public     */    function setCredentials($username, $password)    {        $this->headers['Authorization'] = 'Basic ' . base64_encode($username . ':' . $password);    }    /**     * Adds a cookie.     *     * @access public     * @param string $name  Cookie name.     * @param mixed $value  Cookie value.     */    function addCookie($name, $value)    {        $this->cookies[$name] = $value;    }    /**     * Generates the correct headers for the cookies.     *     * @access private     */    function _genCookieHeader()    {        foreach ($this->cookies as $name=>$value) {            $cookies = (isset($cookies) ? $cookies. '; ' : '') .                        urlencode($name) . '=' . urlencode($value);        }        return $cookies;    }    /**     * Validate url data passed to constructor.     *     * @access private     * @return boolean     */    function _validateUrl()    {        if (!is_array($this->urlparts) ) {            $this->_raiseSoapFault('Unable to parse URL ' . $this->url);            return false;        }        if (!isset($this->urlparts['host'])) {            $this->_raiseSoapFault('No host in URL ' . $this->url);            return false;        }        if (!isset($this->urlparts['port'])) {            if (strcasecmp($this->urlparts['scheme'], 'HTTP') == 0) {                $this->urlparts['port'] = 80;            } elseif (strcasecmp($this->urlparts['scheme'], 'HTTPS') == 0) {                $this->urlparts['port'] = 443;            }        }        if (isset($this->urlparts['user'])) {            $this->setCredentials(urldecode($this->urlparts['user']),                                  urldecode($this->urlparts['pass']));        }        if (!isset($this->urlparts['path']) || !$this->urlparts['path']) {            $this->urlparts['path'] = '/';        }        return true;    }    /**     * Finds out what the encoding is.     * Sets the object property accordingly.     *     * @access private     * @param array $headers  Headers.     */    function _parseEncoding($headers)    {        $h = stristr($headers, 'Content-Type');        preg_match_all('/^Content-Type:\s*(.*)$/im', $h, $ct, PREG_SET_ORDER);        $n = count($ct);        $ct = $ct[$n - 1];        // Strip the string of \r.        $this->result_content_type = str_replace("\r", '', $ct[1]);        if (preg_match('/(.*?)(?:;\s?charset=)(.*)/i',                       $this->result_content_type,                       $m)) {            $this->result_content_type = $m[1];            if (count($m) > 2) {                $enc = strtoupper(str_replace('"', '', $m[2]));                if (in_array($enc, $this->_encodings)) {                    $this->result_encoding = $enc;                }            }        }        // Deal with broken servers that don't set content type on faults.        if (!$this->result_content_type) {            $this->result_content_type = 'text/xml';        }    }    /**     * Parses the headers.     *     * @param array $headers  The headers.     */    function _parseHeaders($headers)    {        /* Largely borrowed from HTTP_Request. */        $this->result_headers = array();        $headers = split("\r?\n", $headers);        foreach ($headers as $value) {            if (strpos($value,':') === false) {                $this->result_headers[0] = $value;                continue;            }            list($name, $value) = split(':', $value);            $headername = strtolower($name);            $headervalue = trim($value);            $this->result_headers[$headername] = $headervalue;            if ($headername == 'set-cookie') {                // Parse a SetCookie header to fill _cookies array.                $cookie = array('expires' => null,                                'domain'  => $this->urlparts['host'],                                'path'    => null,                                'secure'  => false);                if (!strpos($headervalue, ';')) {                    // Only a name=value pair.                    list($cookie['name'], $cookie['value']) = array_map('trim', explode('=', $headervalue));                    $cookie['name']  = urldecode($cookie['name']);                    $cookie['value'] = urldecode($cookie['value']);                } else {                    // Some optional parameters are supplied.                    $elements = explode(';', $headervalue);                    list($cookie['name'], $cookie['value']) = array_map('trim', explode('=', $elements[0]));                    $cookie['name']  = urldecode($cookie['name']);                    $cookie['value'] = urldecode($cookie['value']);                    for ($i = 1; $i < count($elements);$i++) {                        list($elName, $elValue) = array_map('trim', explode('=', $elements[$i]));                        if ('secure' == $elName) {                            $cookie['secure'] = true;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -