Reformat source code: demos
[plcapi.git] / demo / client / wrap.php
1 <html>
2 <head><title>xmlrpc</title></head>
3 <body>
4 <h1>Webservice wrappper demo</h1>
5
6 <h2>Wrap methods exposed by server into php functions</h2>
7
8 <h3>The code demonstrates usage of the most automagic client usage possible:<br/>
9     1) client that returns php values instead of xmlrpcval objects<br/>
10     2) wrapping of remote methods into php functions
11 </h3>
12 <?php
13 include "xmlrpc.inc";
14 include "xmlrpc_wrappers.inc";
15
16 $c = new xmlrpc_client("/server.php", "phpxmlrpc.sourceforge.net", 80);
17 $c->return_type = 'phpvals'; // let client give us back php values instead of xmlrpcvals
18 $r = &$c->send(new xmlrpcmsg('system.listMethods'));
19 if ($r->faultCode()) {
20     echo "<p>Server methods list could not be retrieved: error '" . htmlspecialchars($r->faultString()) . "'</p>\n";
21 } else {
22     $testcase = '';
23     echo "<p>Server methods list retrieved, now wrapping it up...</p>\n<ul>\n";
24     foreach ($r->value() as $methodname) {
25         // $r->value is an array of strings
26
27         // do not wrap remote server system methods
28         if (strpos($methodname, 'system.') !== 0) {
29             $funcname = wrap_xmlrpc_method($c, $methodname);
30             if ($funcname) {
31                 echo "<li>Remote server method " . htmlspecialchars($methodname) . " wrapped into php function " . $funcname . "</li>\n";
32             } else {
33                 echo "<li>Remote server method " . htmlspecialchars($methodname) . " could not be wrapped!</li>\n";
34             }
35             if ($methodname == 'examples.getStateName') {
36                 $testcase = $funcname;
37             }
38         }
39     }
40     echo "</ul>\n";
41     if ($testcase) {
42         echo "Now testing function $testcase: remote method to convert U.S. state number into state name";
43         $statenum = 25;
44         $statename = $testcase($statenum, 2);
45         echo "State number $statenum is " . htmlspecialchars($statename);
46     }
47 }
48 ?>
49 </body>
50 </html>