клиент: PHP: function do_call($host, $port, $path, $request) { $sock = fsockopen($host, $port, $errno, $errstr, 30); if (!$sock) die("$errstr ($errno)\r\n"); fwrite($sock, "POST $path HTTP/1.0\r\n"); fwrite($sock, "User-Agent: PHPRPC/1.0\r\n"); fwrite($sock, "Host: $host\r\n"); fwrite($sock, "Content-type: text/xml\r\n"); fwrite($sock, "Content-length: " . strlen($request) . "\r\n"); fwrite($sock, "Accept: */*\r\n"); fwrite($sock, "\r\n"); fwrite($sock, "$request\r\n"); fwrite($sock, "\r\n"); $headers = ""; while ($str = trim(fgets($sock, 4096))) { $headers .= "$str\r\n"; } $data = ""; while (!feof($sock)) { $data .= fgets($sock, 4096); } fclose($sock); return $data; } $arMessage = array(); function make_request($request, &$arMessage, $tel, $msg, $method) { global $host, $port, $path; $retval = do_call($host, $port, $path, $request); $data = xmlrpc_decode($retval, 'utf-8'); if (is_array($data) && xmlrpc_is_fault($data)) { $arMessage[] = "Unable"; $arMessage[] = "Error Code: ".$data['faultCode']; $arMessage[] = "Error Message: ".$data['faultString']; } else { $arMessage[] = $data; } } $request = xmlrpc_encode_request('getQuery', array($tel, $msg)); make_request($request, $arMessage, $tel, $msg, "getQuery"); $arMessage[] = ""; foreach ($arMessage AS $message) { print $message."\r\n"; print_r($arMessage); } сервер такой: PHP: class getQuery { function getQuery($method, $params) { // код $result = "test"; return $result; } } $server = xmlrpc_server_create(); xmlrpc_server_register_method($server, "getQuery", "getQuery"); if (!isset($HTTP_RAW_POST_DATA)){ $HTTP_RAW_POST_DATA = file_get_contents('php://input'); } $request = $HTTP_RAW_POST_DATA; $resp = xmlrpc_server_call_method($server, $request, array()); header('Content-Type: text/xml'); print $resp; xmlrpc_server_destroy($server); вывод: Array ( [0] => [1] => ) Array ( [0] => [1] => ) кто-нить может посоветовать, в какую сторону копать?
Подумалось вдруг, что кто из джедаев подскажет, с чего массив $data может быть пустым. не вижу я, чего неправильно делаю. где ошибка - в клиенте или сервере?