Précédent   Forum des professionnels en informatique > PHP > Outils > Zend > Zend Framework > Autres composants
Autres composants Forum de support sur les autres composants de Zend Framework.
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 11/07/2007, 23h26   #1
Membre confirmé
 
Avatar de zulad
 
Inscription : juin 2007
Messages : 505
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 505
Points : 292
Points : 292
Par défaut XML-RPC appel de méthode

Dans ma classe j'ai une fonction simple :

Code :
1
2
3
4
5
 
 function md5Value($value)
 {//    
  return md5($value[0]);
 }//
et en suivant l'api

Code :
1
2
 
void call (string $method, [array $params = array()])
je fais :

Code :
1
2
3
 
$array[0]="test";
echo $client->call("md5Value",$array);
qui genere l'erreur :

Code :
1
2
 
message 'Method "md5Value" does not exist
pourquoi ?
zulad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2007, 23h34   #2
Membre confirmé
 
Avatar de zulad
 
Inscription : juin 2007
Messages : 505
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 505
Points : 292
Points : 292
sorry, l'erreur venait du namespace manquant dans

Code :
1
2
 
echo $client->call("md5Value",$array);
l'erreur est maintenantla suivante

Code :
1
2
 
'Zend_XmlRpc_Client_FaultException' with message 'Calling parameters do not match signature'
zulad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2007, 23h41   #3
Modérateur
 
Avatar de mathieu
 
Inscription : juin 2003
Messages : 4 893
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 4 893
Points : 4 466
Points : 4 466
tu as lu où qu'il faut mettre "$params = array()" pour "call" ?
s'il y a juste indiqué ça, sans exemple de code, j'aurais essayé quelque chose comme ça :
Code :
$client->call('md5Value', array('value' => $array))
__________________
Modérateur PHP
mathieu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2007, 23h48   #4
Modérateur
 
Avatar de mathieu
 
Inscription : juin 2003
Messages : 4 893
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 4 893
Points : 4 466
Points : 4 466
je viens de regarder le code source de Zend/XmlRpc/Request.php et apparemment il faut plutôt mettre ça :
Code :
1
2
3
4
5
6
7
8
$client->call('md5Value', 
    array(
        array(
            'value' => $array,
            'type' => NULL,
        )
    )
)
__________________
Modérateur PHP
mathieu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2007, 23h55   #5
Membre confirmé
 
Avatar de zulad
 
Inscription : juin 2007
Messages : 505
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 505
Points : 292
Points : 292
toujours l'erreur de signature ...

l'api est ici

http://framework.zend.com/apidoc/core/
zulad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2007, 00h06   #6
Membre confirmé
 
Avatar de zulad
 
Inscription : juin 2007
Messages : 505
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 505
Points : 292
Points : 292
toujours en suivant les exemples

$hello = $test->sayHello(1, 2); // test.Hello(1,2) returns "hello"

j'ai pour la fonction

Code :
1
2
3
4
5
 
 function md5Value($value)
 {//    
  return $value;
 }//
une exception de signature avec l'appel

Code :
1
2
3
 
 $test = $client->getProxy('cla');
 echo $test->md5Value("test");
c'est pas clair leur doc
zulad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2007, 09h26   #7
Modérateur
 
Avatar de mathieu
 
Inscription : juin 2003
Messages : 4 893
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 4 893
Points : 4 466
Points : 4 466
Citation:
Envoyé par zulad
c'est pas clair leur doc
je confirme

est ce que tu peux me donner le code de ton serveur pour les tests ? j'ai repris celui que tu as mis dans l'autre discussion mais j'ai une erreur parce qu'il ne connait pas la classe "Services_Request"
__________________
Modérateur PHP
mathieu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2007, 10h04   #8
Membre confirmé
 
Avatar de zulad
 
Inscription : juin 2007
Messages : 505
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 505
Points : 292
Points : 292
voici le server, c'est exactement le même que pour mon precedent topic

Code :
1
2
3
4
5
6
 
require_once 'Zend/XmlRpc/Server.php';
require_once 'Myclass.php';
$server = new Zend_XmlRpc_Server();
$server->setClass('Myclass','cla');
echo $server->handle();
zulad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2007, 10h44   #9
Membre confirmé
 
Avatar de zulad
 
Inscription : juin 2007
Messages : 505
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 505
Points : 292
Points : 292
Citation:
...j'ai une erreur parce qu'il ne connait pas la classe "Services_Request"
je ne fais pas ce genre d'appel. Comment t'y es tu pris pour tester ?
zulad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2007, 18h03   #10
Modérateur
 
Avatar de mathieu
 
Inscription : juin 2003
Messages : 4 893
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 4 893
Points : 4 466
Points : 4 466
Citation:
Envoyé par zulad
je ne fais pas ce genre d'appel. Comment t'y es tu pris pour tester ?
j'ai pris le serveur tout compliqué que tu as mis là
http://www.developpez.net/forums/sho...98#post2285598

je vais tester tout ça se soir
__________________
Modérateur PHP
mathieu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2007, 21h30   #11
Modérateur
 
Avatar de mathieu
 
Inscription : juin 2003
Messages : 4 893
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 4 893
Points : 4 466
Points : 4 466
j'ai trouvé le problème, le serveur ne sais pas quels types d'argument sont passés la méthode parce que ... il ne sais pas les trouver
il faut donc les rajouter en commentaire dans ta classe :
Code :
1
2
3
4
5
6
7
8
    /**
     * @param string $value1
     * @param string $value2
     */
    function md5Value($value1, $value2)
    {   
        return md5($value . md5($value2));
    }
et ensuite tu l'appelles comme ça :
Code :
$resultat = $client->call('md5Value', array('value1', 'value2'));
__________________
Modérateur PHP
mathieu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2007, 23h34   #12
Membre confirmé
 
Avatar de zulad
 
Inscription : juin 2007
Messages : 505
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 505
Points : 292
Points : 292
Ca marche,

Code :
1
2
3
4
 
$test = $client->getProxy('cla');
//echo $client->call('cla.md5Value', array('value1', 'value2'));
echo $test->md5Value('value');
j'ignorais que les commentaires jouaient leur rôle merci
zulad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2007, 23h48   #13
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Les commentaires jouent de plus en plus souvent un rôle
Exemples :
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h50.


 
 
 
 
Partenaires

Hébergement Web