Ah - great, thanks a lot! Could you kindly point me to the documentation for this please?

On 24 Jul 2007, at 18:21, Matthew Weier O'Phinney wrote:

-- Nilesh Ashra <[EMAIL PROTECTED]> wrote
(on Tuesday, 24 July 2007, 05:46 PM +0100):
Hi all,

I've created a Zend_XmlRpc_Server, like so:

require_once "Zend/XmlRpc/Server.php";
function echoTest()
{
    return "Hello, world";
}
$server = new Zend_XmlRpc_Server();
$server->addFunction("echoTest");
echo $server->handle();

Calling the "echoTest" method using Zend_XmlRpc_Client works fine like this:

require_once 'Zend/XmlRpc/Client.php';
$client = new Zend_XmlRpc_Client('http://myhostname/index.php');
print_r($client->call('echoTest'));

This definitely works, I get "Hello, world" in the browser.

However, if I add a parameter to the echoTest method like so:

function echoTest($textToEcho)
{
    return "You said: " . $textToEcho;
}

and call it using the client class like this this:

require_once 'Zend/XmlRpc/Client.php';
$client = new Zend_XmlRpc_Client('http://myhostname/index.php');
print_r($client->call('echoTest', array("HELLO WORLD!")));

I get the following exception:

Fatal error: Uncaught exception 'Zend_XmlRpc_Client_FaultException' with message 'Calling parameters do not match signature' in /usr/local/ include/php/ php-5.2.3/zend_framework_co/library/Zend/XmlRpc/Client.php:261 Stack trace: #0
/private/var/www/VirtualHosts/myhostname/public/phpclient.php(5):
Zend_XmlRpc_Client->call('echoTest', Array) #1 {main} thrown in / usr/local/ include/php/php-5.2.3/zend_framework_co/library/Zend/XmlRpc/ Client.php on line
261

It seems adding any parameter to a method or function causes this error.
Functions/methods with no parameters always work.

I've been trying to get it to work for hours, and consulted the docs (even copied examples from the docs) but I always get this error. I'm using php 5.2.3 and apache 2, but have also tried it on a different server with php 5.1.6.

I have tried using Zend Framework from svn trunk, but that doesn't fix it
either.

Am I missing something very fundamental?

Yes. You need to have docblocks in place:

    /**
     * Echo back a string
     *
     * @param string $textToEcho
     * @return string
     */
    function echoTest($textToEcho)
    {
        return "You said: " . $textToEcho;
    }

The docblocks are used to provide type hinting so that the XmlRpc server
knows what variable types are allowed for a given parameter -- this is
both as a security measure as well as to ensure that method signatures
are properly generated.

--
Matthew Weier O'Phinney
PHP Developer            | [EMAIL PROTECTED]
Zend - The PHP Company   | http://www.zend.com/

--
Nilesh Ashra // POKE // Biscuit Building // 10 Redchurch Street // E2 7DD // 07736 283320


Reply via email to