Welcome Guest, Not a member yet? Register   Sign In
XMLRPC return types
#1

[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>';
        }
    }
}
?&gt;

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:
&lt;?xml version="1.0"?&gt;
<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:
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
<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?




Theme © iAndrew 2016 - Forum software by © MyBB