XML-RPC 函数
在线手册:中文  英文

xmlrpc_server_call_method

(PHP 4 >= 4.1.0, PHP 5)

xmlrpc_server_call_method解析 XML 请求同时调用方法

说明

string xmlrpc_server_call_method ( resource $server , string $xml , mixed $user_data [, array $output_options ] )
Warning

此函数是实验性的。此函数的表象,包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档,仅有参数列表。


XML-RPC 函数
在线手册:中文  英文

用户评论:

marco.buratto at tiscali punto it (2006-12-28 08:15:24)

xmlrpc_server_call_method() with class methods

<?php
require_once ('Connections/adodb_mysql_connection.php');

// Instantiating my own class
$my_report = new external_report($db_connection);

// Setting up the XML-RPC "server"
$xmlrpc_server_handler xmlrpc_server_create();
xmlrpc_server_register_method($xmlrpc_server_handler"external_method", array(&$my_report"export"));

// Creating XML return data
if ($response xmlrpc_server_call_method($xmlrpc_server_handler$HTTP_RAW_POST_DATAnull))
    {
    
header('Content-Type: text/xml');
    echo 
$response;
    }

// **************** class definition ****************

class external_report
    
{
    protected 
$db_connection;

    public function 
__construct($db_connection_pointer)
        {
        if (
method_exists($db_connection_pointer"Execute")) $this->db_connection $db_connection_pointer;
        else die(
"...");
        }

    public function 
export($method_name$params_array)
        {
        
$id_dir = (int)$params_array[0];
        
$id_usr = (int)$params_array[1]; // not used, just an example
        // We have to add arguments' validating code here and NOT inside the constructor (as usual)
        // because arguments are passed directly by xmlrpc_server_call_method (?!!)
        
        
$myexport = array();

        
$dirs_query "SELECT documento_id FROM tabella_cartelle WHERE cartella_id = ".$id_dir;
        
$dirs_result $this->db_connection->Execute($dirs_query) or die("...");

        
$index 0;
        while(!
$dirs_result->EOF)
            {
            
$docs_query "SELECT codice, titolo FROM tabella_documenti WHERE id_documento = ".$dirs_result->Fields('documento_id');
            
$docs_result $this->db_connection->Execute($docs_query) or die("...");

            
$myexport[$index]['codice'] = $docs_result->Fields('codice');
            
$myexport[$index]['titolo'] = $docs_result->Fields('titolo');

            
$index++;
            
$dirs_result->MoveNext();
            }

        return 
$myexport;
        }
    }
?>

nyvsld at gmail dot com (2005-11-27 05:08:27)

<?php
/* method implementation */
function impl($method_name,$params,$user_data){
  
var_dump(func_get_args('impl'));
  return 
array_sum($params);
}

/* create server */
$s=xmlrpc_server_create();
xmlrpc_server_register_method($s,'add','impl');

/* calling server method */
$req=xmlrpc_encode_request('add',array(1,2,3));
$resp=xmlrpc_server_call_method($s,$req,array(3,4));

/* process result */
$decoded=xmlrpc_decode($resp);
if(
xmlrpc_is_fault($decoded)){
    echo 
'fault!';
}

var_dump($decoded);
?>

易百教程