PHP 5.4.31 Released

xmlrpc_server_call_method

(PHP 4 >= 4.1.0, PHP 5)

xmlrpc_server_call_methodAnalyse une requête XML et appelle les méthodes associées

Description

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

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et, concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS ! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

add a note add a note

User Contributed Notes 2 notes

up
1
marco.buratto at tiscali punto it
7 years ago
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_DATA, null))
    {
   
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;
        }
    }
?>
up
-1
nyvsld at gmail dot com
8 years ago
<?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);
?>
To Top