function clients_connection_drupal_services_7_3::callMethodArray in Web Service Clients 7.2
Same name and namespace in other branches
- 6.2 connections/clients_drupal/clients_drupal.inc \clients_connection_drupal_services_7_3::callMethodArray()
- 7.3 connections/clients_drupal/clients_drupal.inc \clients_connection_drupal_services_7_3::callMethodArray()
Call a remote method.
Parameters
$method: The name of the remote method to call.
$method_params: An array of parameters to passed to the remote method. Note that the D5 version of Services does not seem to respect optional parameters; you should pass in defaults (eg an empty string or 0) instead of omitting a parameter.
Return value
Whatever is returned from the remote site.
Overrides clients_connection_base::callMethodArray
1 call to clients_connection_drupal_services_7_3::callMethodArray()
- clients_connection_drupal_services_7_3::testConnectionNodeLoad in connections/
clients_drupal/ clients_drupal.inc - Connection test button handler: loading a node: Services 7.x-3.x.
File
- connections/
clients_drupal/ clients_drupal.inc, line 284 - Contains classes for Client connections handlers.
Class
- clients_connection_drupal_services_7_3
- Drupal client for services on a Drupal 7 site for Services 7.x-3.x.
Code
function callMethodArray($method, $method_params = array()) {
// Connect to the remote system service to get an initial session id to log in with.
$connect = xmlrpc($this->endpoint, 'system.connect');
$session_id = $connect['sessid'];
// We may want to call only system.connect for testing purposes.
if ($method == 'system.connect') {
$this
->handleXmlrpcError();
return $connect;
}
// Log in and get the user's session ID.
$username = $this->configuration['username'];
$password = $this->configuration['password'];
$login = xmlrpc($this->endpoint, 'user.login', $username, $password);
$login_session_id = $login['sessid'];
// If the requested method is user.login, we're done.
if ($method == 'user.login') {
$this
->handleXmlrpcError();
return $login;
}
// Build the array of connection arguments for the method we want to call.
$xmlrpc_args = array_merge(array(
$this->endpoint,
$method,
), $method_params);
// Call the xmlrpc method with our array of arguments.
$result = call_user_func_array('xmlrpc', $xmlrpc_args);
// Throw an exception for errors from the remote call.
$this
->handleXmlrpcError();
return $result;
}