Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > Services Web
Services Web Forum d'entraide pour les services Web en PHP, qui permettent de créer et de consommer facilement des webservices (génération de WSDL etc.). Exemples : SOAP, NuSOAP, REST, SCA-SDO... Avant de poster -> Cours webservices
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/12/2010, 00h09   #1
Membre du Club
 
Avatar de Nixar
 
Inscription : mars 2006
Messages : 295
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 295
Points : 50
Points : 50
Envoyer un message via MSN à Nixar
Par défaut [XMLRPC] Comment lire un tableau côté serveur?

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 :
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 :
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)
					   )			
				 );
 
?>
Nixar est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h53.


 
 
 
 
Partenaires

Hébergement Web