Bonjour à tous,
Je cherche à implémenter un webservice en php utilisant la norme XMLRPC (c'est ce qui m'a paru le plus "simple", rapide et portable étant donné que je compte l'attaquer avec plusieurs clients différents : iPhone, client lourd .NET...)
J'ai suivi les exemples qu'on trouve sur le net, mais je ne comprends toujours pas comment extraire des données que je passe via un tableau... Mon code (mes interrogations sont au niveau du début du code serveur) :
Le client :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 <?php include 'xmlrpc.inc'; // Make an object to represent our server. $server = new xmlrpc_client('/webservices/webservices.php','mondomaine.com', 80); //('/api/sample.php','xmlrpc-c.sourceforge.net', 80); //Prepare the data array $array = array('test ','test2 ','test3'); // Send a message to the server. $message = new xmlrpcmsg('mondomaine.maMethode', new xmlrpcval($array, 'array')); $result = $server->send($message); // Process the response. if (!$result) { print "<p>Could not connect to HTTP server.</p>"; } elseif ($result->faultCode()) { print "<p>XML-RPC Fault #" . $result->faultCode() . ": " . $result->faultString(); } else { $struct = $result->value(); $textval = $struct->structmem('concat'); print ("<p>" . $textval . "</p>"); }
Mon serveur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 <?php include 'xmlrpc.inc'; include 'xmlrpcs.inc'; /********************************************* * METHODE DE CONCATENATION * **********************************************/ function maMethode ($params) { // Parse our parameters. // Comment faire ? // Les exemples montrent comment parser une valeur numérique et je n'ai pas réussi à reproduire pour un tableau. Voici ce que j'ai fait qui me renvoie une erreur "Catchable fatal error: Object of class xmlrpcval could not be converted to string in /homez.139/guybonni/www/webservices/test.php on line 41" : $val = $params->getParam(0); $struct = array('concat' => new xmlrpcval($val[0], 'string')); return new xmlrpcresp(new xmlrpcval($struct, 'struct')); } // Declare our signature and provide some documentation. // (The PHP server supports remote introspection. Nifty!) $maMethode_sig = array('struct', 'array'); $maMethode_doc = 'Ce que fait ma méthode'; new xmlrpc_server( 'monDomaine.maMethode' => array('function' => 'maMethode', 'signature' => $maMethode_sig, 'docstring' => $maMethode_doc) ) ); ?>








Répondre avec citation
Partager