\n$http_request\n", $debug); fputs($query_fd, $http_request, strlen($http_request)); dbg1("receiving response...", $debug); $header_parsed = false; $line = fgets($query_fd, 4096); while ($line) { if (!$header_parsed) { if ($line === "\r\n" || $line === "\n") { $header_parsed = 1; } dbg2("got header - $line", $debug); } else { $response_buf .= $line; } $line = fgets($query_fd, 4096); } fclose($query_fd); } else { dbg1("socket open failed", $debug); } } else { dbg1("missing param(s)", $debug); } dbg1("got response:
. \n$response_buf\n\n", $debug); return $response_buf; } function xu_fault_code($code, $string) { return array('faultCode' => $code, 'faultString' => $string); } function find_and_decode_xml($buf, $debug) { if (strlen($buf)) { $xml_begin = substr($buf, strpos($buf, " 'xml', * 'verbosity' => 'pretty', * 'escaping' => array('markup', 'non-ascii', 'non-print'), * 'version' => 'xmlrpc', * 'encoding' => 'utf-8' * ); * or * * $output_options = array('output_type' => 'php'); */ function xu_rpc_http_concise($params) { $host = $uri = $port = $method = $args = $debug = null; $timeout = $user = $pass = $secure = $cookies = null; extract($params); // default values if (!$port) { $port = 80; } if (!$uri) { $uri = '/'; } if (!$output) { $output = array('version' => 'xmlrpc'); } $response_buf = ""; if ($host && $uri && $port) { $request_xml = xmlrpc_encode_request($method, $args, $output); $response_buf = xu_query_http_post($request_xml, $host, $uri, $port, $debug, $timeout, $user, $pass, $secure); $retval = find_and_decode_xml($response_buf, $debug); } return $retval; } /* call an xmlrpc method on a remote http server. legacy support. */ function xu_rpc_http($method, $args, $host, $uri = "/", $port = 80, $debug = false, $timeout = 0, $user = false, $pass = false, $secure = false) { return xu_rpc_http_concise( array( 'method' => $method, 'args' => $args, 'host' => $host, 'uri' => $uri, 'port' => $port, 'debug' => $debug, 'timeout' => $timeout, 'user' => $user, 'pass' => $pass, 'secure' => $secure )); } function xu_is_fault($arg) { // xmlrpc extension finally supports this. return is_array($arg) ? xmlrpc_is_fault($arg) : false; } /* sets some http headers and prints xml */ function xu_server_send_http_response($xml) { header("Content-type: text/xml"); header("Content-length: " . strlen($xml)); echo $xml; } function dbg($msg) { echo "", $msg, "
"; flush(); } function dbg1($msg, $debug_level) { if ($debug_level >= 1) { dbg($msg); } } function dbg2($msg, $debug_level) { if ($debug_level >= 2) { dbg($msg); } }