A quick question about xml-rpc

Do you have a question? Post it now! No Registration Necessary.  Now with pictures!

Threaded View
for the following code, why it uses $method = 'examples.getStateName';
instead of $method = 'getStateName'; or $method =

What does "example" here mean? Thanks

// this is the default file name from the package
// kept here to avoid confusion over the file name
require 'utils.php';

// server settings
$host = 'betty.userland.com';
$port = 80;
$uri = '/RPC2';

// request settings
// pass in a number from 1-50; get the nth state in alphabetical order
// 1 is Alabama, 50 is Wyoming
$method = 'examples.getStateName';
$args = array(32); // data to be passed

// make associative array out of these variables
$request = compact('host', 'port', 'uri', 'method', 'args');

// this function makes the XML-RPC request
$result = xu_rpc_http_concise($request);

print "I love $result!\n";

Re: A quick question about xml-rpc

Quoted text here. Click to load it

It means the getStateName function is a method of the 'examples'
object. You don't need to put parenthesis on the end of the method
because there are never any arguments to put in there. The arguments
in an xml-rpc request go in the 'args' index of the array you pass to
xu_rpc_http_concise(). The whole thing with the compact() call
basically does the same thing as this:

    'method' => 'examples.getStateName',
    'args' => array( 32 ),
    'host' => '...',
    'port' => '...',
    'uri' => '...'

...because xu_rpc_http_concise() takes an associative array of it's
arguments instead of just the arguments in the parenthesis on the
function. What the example would look like if you were calling the
same method if it were right in PHP would be something like:

$examples = new SomeClass();
$result = $examples->getStateName( 32 );
echo "I love $result!\n";

Where SomeClass is some class that has a getStateName() method that
does whatever the xml-rpc method does.

-Mike PII

Re: A quick question about xml-rpc

Thanks Mike. I still do not quite understand. I do not have any class
that has getStateName method. It is an object in the remote machine
that has this method, isn't it? Correct me if I am wrong, it sounds it
is sufficient to just send  $method = 'getStateName'


Quoted text here. Click to load it

Re: A quick question about xml-rpc

Quoted text here. Click to load it

Yes, the object is on the remote machine, and the method
'getStateName' is within that object. Just like you might organize
methods into classes in your own php code, the remote machine has
getStateName() organized into an 'examples' object.

In PHP, if you have an object instance in the variable $examples and
the class that it is an instance of has the method getStateName(), you
can't just do:

$whatever = getStateName();

You have to do

$whatever = $examples->getStateName();

Because getStateName() is not in the global scope, it is in the
$examples object.

If you still don't understand and would like to know why you have to
put in 'examples', maybe you should study PHP OOP more to get a better
understanding of OOP.

-Mike PII

Re: A quick question about xml-rpc

Quoted text here. Click to load it

Hi Mike,

Thanks for reply.

I have used OOP and Java for several years so I understand  OOP
concepts. Back to my question, it seems the  'examples' in $method =
'examples.getStateName' is arbitrary. Can I change it to other words?

Thanks a lot,


Re: A quick question about xml-rpc

Quoted text here. Click to load it

Oh, so you're curious because changing it doesn't have any effect...

I have no idea why it acts that way. That's weird.

Mike PII

Re: A quick question about xml-rpc


Quoted text here. Click to load it

I would say it entirely depends on what the RPC server expects. If the
server requires a call to be like 'object.method' then you have to use
it that way. But it could also be something completely different. So I
think you need some more informations about what methods are available
on the RPC server and how you have to call them.


Re: A quick question about xml-rpc

Ming wrote:
Quoted text here. Click to load it


It has nothing to do with YOUR code.  You're calling a procedure on the  

In this case the procedure defined by the server is  
example.getStateName.  It can be foo.bar, if you change it on both ends.

It's just like a web page.  You can create a web page with any (legal)  
name you want.  But if you want a browser to display the page, the  
browser has to use the URI defined at the server.

Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.

Site Timeline