Home arrow PHP arrow Page 5 - Using XML-RPC with PHP

Creating an XML-RPC Server - PHP

Do you want your Perl code on one server to call your PHP functions on another? "Impossible!" you say? Not with XML-RPC. XML-RPC is a standard way for any application to make requests and recieve responses from methods written in any language. Interested? I knew you would be.

TABLE OF CONTENTS:
  1. Using XML-RPC with PHP
  2. Compiling PHP with XML-RPC Support
  3. Dissection of a XML-RPC Call
  4. Dissection of a XML-RPC Response
  5. Creating an XML-RPC Server
  6. Creating an XML-RPC Client
  7. Conclusion
By: Lucas Marshall
Rating: starstarstarstarstar / 42
December 20, 2001

print this article
SEARCH DEV SHED

TOOLS YOU CAN USE

advertisement
In the XML-RPC world, you need a client and a server. The client is simply the application making the request, and the server is simply the service that processes the request and returns a response. In this section, we're looking at how to create an XML-RPC server service.

PHP's XML-RPC extension has several methods that deal with servers, the most important being xmlrpc_server_create(), xmlrpc_server_register_method() and xmlrpc_server_call_method().

xmlrpc_create_server() simply tells PHP that you would like to create a server.

xmlrpc_server_register_method() registers PHP methods with the XML-RPC server so they may be called by a client.

xmlrpc_server_call_method() is used for passing a request to the XML-RPC server and receiving a response.

Nothing teaches like an example, so here you go (the comments in the example provide more details about the functions).

<?php /* * First, we define some PHP functions to expose via * XML-RPC. Any functions that will be called by a * XML-RPC client need to take three parameters: * The first parameter passed is the name of the * XML-RPC method called, the second is an array * Containing the parameters sent by the client, and * The third is any data sent in the app_data * parameter of the xmlrpc_server_call_method() * function (see below). */ function uptime_func($method_name, $params, $app_data) { return `uptime`; } function greeting_func($method_name, $params, $app_data) { $name = $params[0]; return "Hello, $name. How are you today?"; } /* * This creates a server and sets a handle for the * server in the variable $xmlrpc_server */ $xmlrpc_server = xmlrpc_server_create(); /* * xmlrpc_server_register_method() registers a PHP * function as an XML-RPC method. It takes three * parameters: * The first is the handle of a server created with * xmlrpc_server_create(), the second is the name to * register the server under (this is what needs to * be in the <methodName> of a request for this * method), and the third is the name of the PHP * function to register. */ xmlrpc_server_register_method($xmlrpc_server, "greeting", "greeting_func"); xmlrpc_server_register_method($xmlrpc_server, "uptime", "uptime_func"); /* * When an XML-RPC request is sent to this script, it * can be found in the raw post data. */ $request_xml = $HTTP_RAW_POST_DATA; /* * The xmlrpc_server_call_method() sends a request to * the server and returns the response XML. In this case, * it sends the raw post data we got before. It requires * 3 arguments: * The first is the handle of a server created with * xmlrpc_server_create(), the second is a string containing * an XML-RPC request, and the third is for application data. * Whatever is passed into the third parameter of this function * is passed as the third paramater of the PHP function that the * request is asking for. */ $response = xmlrpc_server_call_method($xmlrpc_server, $request_xml, ''); // Now we print the response for the client to read. print $response; /* * This method frees the resources for the server specified * It takes one argument, a handle of a server created with * xmlrpc_server_create(). */ xmlrpc_server_destroy($xmlrpc_server); ?>


 
 
>>> More PHP Articles          >>> More By Lucas Marshall
 

blog comments powered by Disqus
escort Bursa Bursa escort Antalya eskort
   

PHP ARTICLES

- Hackers Compromise PHP Sites to Launch Attac...
- Red Hat, Zend Form OpenShift PaaS Alliance
- PHP IDE News
- BCD, Zend Extend PHP Partnership
- PHP FAQ Highlight
- PHP Creator Didn't Set Out to Create a Langu...
- PHP Trends Revealed in Zend Study
- PHP: Best Methods for Running Scheduled Jobs
- PHP Array Functions: array_change_key_case
- PHP array_combine Function
- PHP array_chunk Function
- PHP Closures as View Helpers: Lazy-Loading F...
- Using PHP Closures as View Helpers
- PHP File and Operating System Program Execut...
- PHP: Effects of Wrapping Code in Class Const...

Developer Shed Affiliates

 


Dev Shed Tutorial Topics: