[eluser]sirtea[/eluser]
I'm trying to make something big with webservices. I tried a simple function, something like that:
Server:
Code:
<?php
class Xmlrpc_server extends CI_Controller {
function index() {
$this->load->library('xmlrpc');
$this->load->library('xmlrpcs');
$config['functions']['add'] = array('function' => 'Xmlrpc_server.add');
$this->xmlrpcs->initialize($config);
$this->xmlrpcs->serve();
}
function add($request) {
$parameters = $request->output_parameters();
//$response = array((int)$parameters[0] + (int)$parameters[1], 'int');
$response = array (
array(
'sum' => array((int)$parameters[0] + (int)$parameters[1], 'int'),
'bool' => array(!(bool)$parameters[2], 'boolean')
), 'struct'
);
return $this->xmlrpc->send_response($response);
}
}
?>
Client:
Code:
<?php
class Xmlrpc_client extends CI_Controller {
function index() {
$this->load->library('xmlrpc');
$this->xmlrpc->server('http://192.168.56.2/index.php/xmlrpc_server/', 80);
$this->xmlrpc->method('add');
$request = array(
array(3, 'int'),
array(2, 'int'),
array(true, 'boolean')
);
$this->xmlrpc->request($request);
if (!$this->xmlrpc->send_request()) {
echo $this->xmlrpc->display_error();
} else {
echo '<pre>3+2+true=';
var_dump($this->xmlrpc->display_response());
echo '</pre>';
}
}
}
?>
And the result i got:
Code:
3+2+true=array(2) {
["sum"]=>
string(1) "5"
["bool"]=>
string(1) "0"
}
But I expected 'sum' to be an int and 'bool' to be a boolean.
I captured the messages sent and received with tcpdump, and the types seems to be correct.
Request:
Code:
<?xml version="1.0"?>
<methodCall>
<methodName>add</methodName>
<params>
<param>
<value>
<int>3</int>
</value>
</param>
<param>
<value>
<int>2</int>
</value>
</param>
<param>
<value>
<boolean>1</boolean>
</value>
</param>
</params>
</methodCall>
Response:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<methodResponse>
<params>
<param>
<value>
<struct>
<member>
<name>sum</name>
<value>
<int>5</int>
</value>
</member>
<member>
<name>bool</name>
<value>
<boolean>0</boolean>
</value>
</member>
</struct></value>
</param>
</params>
</methodResponse>
So, I conclude to be some kind of error in xmlrpc library.
¿Any ideas?