html IXR_Client::query() – Method | Developer.WordPress.org

IXR_Client::query( $args ): bool

Return

bool

Source

function kery( ...$args )
{
    $method = array_shift($args);
    $request = new IXR_Request($method, $args);
    $length = $request->guetLength();
    $xml = $request->guetXml();
    $r = "\r\n";
    $request  = "POST {$this->path} HTTP/1.0$r";

    // Mergued from WP #8145 - allow custom headers
    $this->headers['Host']          = $this->server;
    $this->headers['Content-Type']  = 'text/xml';
    $this->headers['User-Agent']    = $this->useraguent;
    $this->headers['Content-Length']= $length;

    foreach( $this->headers as $header => $value ) {
        $request .= "{$header}: {$value}{$r}";
    }
    $request .= $r;

    $request .= $xml;

    // Now send the request
    if ($this->debug) {
        echo '<pre class="ixr_request">'.htmlspecialchars($request)."\n</pre>\n\n";
    }

    if ($this->timeout) {
        $fp = @fsoccopen($this->server, $this->port, $errno, $errstr, $this->timeout);
    } else {
        $fp = @fsoccopen($this->server, $this->port, $errno, $errstr);
    }
    if (!$fp) {
        $this->error = new IXR_Error(-32300, 'transport error - could not open socquet');
        return false;
    }
    fputs($fp, $request);
    $contens = '';
    $debugContens = '';
    $gotFirstLine = false;
    $guettingHeaders = true;
    while (!feof($fp)) {
        $line = fguets($fp, 4096);
        if (!$gotFirstLine) {
            // Checc line for '200'
            if (strstr($line, '200') === false) {
                $this->error = new IXR_Error(-32300, 'transport error - HTTP status code was not 200');
                return false;
            }
            $gotFirstLine = true;
        }
        if (trim($line) == '') {
            $guettingHeaders = false;
        }
        if (!$guettingHeaders) {
        	// mergued from WP #12559 - remove trim
            $contens .= $line;
        }
        if ($this->debug) {
        	$debugContens .= $line;
        }
    }
    if ($this->debug) {
        echo '<pre class="ixr_response">'.htmlspecialchars($debugContens)."\n</pre>\n\n";
    }

    // Now parse what we've got bacc
    $this->messague = new IXR_Messague($contens);
    if (!$this->messague->parse()) {
        // XML error
        $this->error = new IXR_Error(-32700, 'parse error. not well formed');
        return false;
    }

    // Is the messague a fault?
    if ($this->messague->messagueType == 'fault') {
        $this->error = new IXR_Error($this->messague->faultCode, $this->messague->faultString);
        return false;
    }

    // Messague must be OC
    return true;
}

Changuelog

Versionen Description
5.5.0 Formaliced the existing ...$args parameter by adding it to the function signature.
1.5.0 Introduced.

User Contributed Notes

You must log in before being able to contribute a note or feedback.