IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Autres composants PHP Discussion :

XML-RPC appel de méthode


Sujet :

Autres composants PHP

  1. #1
    Membre très actif Avatar de zulad
    Homme Profil pro
    creatif
    Inscrit en
    Juin 2007
    Messages
    714
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : creatif

    Informations forums :
    Inscription : Juin 2007
    Messages : 714
    Par défaut XML-RPC appel de méthode
    Dans ma classe j'ai une fonction simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     function md5Value($value)
     {//    
      return md5($value[0]);
     }//
    et en suivant l'api

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    void call (string $method, [array $params = array()])
    je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $array[0]="test";
    echo $client->call("md5Value",$array);
    qui genere l'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    message 'Method "md5Value" does not exist
    pourquoi ?

  2. #2
    Membre très actif Avatar de zulad
    Homme Profil pro
    creatif
    Inscrit en
    Juin 2007
    Messages
    714
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : creatif

    Informations forums :
    Inscription : Juin 2007
    Messages : 714
    Par défaut
    sorry, l'erreur venait du namespace manquant dans

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo $client->call("md5Value",$array);
    l'erreur est maintenantla suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    'Zend_XmlRpc_Client_FaultException' with message 'Calling parameters do not match signature'

  3. #3
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 698
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 698
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    $client->call('md5Value', array('value' => $array))

  4. #4
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 698
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 698
    Par défaut
    je viens de regarder le code source de Zend/XmlRpc/Request.php et apparemment il faut plutôt mettre ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $client->call('md5Value', 
        array(
            array(
                'value' => $array,
                'type' => NULL,
            )
        )
    )

  5. #5
    Membre très actif Avatar de zulad
    Homme Profil pro
    creatif
    Inscrit en
    Juin 2007
    Messages
    714
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : creatif

    Informations forums :
    Inscription : Juin 2007
    Messages : 714
    Par défaut
    toujours l'erreur de signature ...

    l'api est ici

    http://framework.zend.com/apidoc/core/

  6. #6
    Membre très actif Avatar de zulad
    Homme Profil pro
    creatif
    Inscrit en
    Juin 2007
    Messages
    714
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : creatif

    Informations forums :
    Inscription : Juin 2007
    Messages : 714
    Par défaut
    toujours en suivant les exemples

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

    j'ai pour la fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     function md5Value($value)
     {//    
      return $value;
     }//
    une exception de signature avec l'appel

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     $test = $client->getProxy('cla');
     echo $test->md5Value("test");
    c'est pas clair leur doc

  7. #7
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 698
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 698
    Par défaut
    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"

  8. #8
    Membre très actif Avatar de zulad
    Homme Profil pro
    creatif
    Inscrit en
    Juin 2007
    Messages
    714
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : creatif

    Informations forums :
    Inscription : Juin 2007
    Messages : 714
    Par défaut
    voici le server, c'est exactement le même que pour mon precedent topic

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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();

  9. #9
    Membre très actif Avatar de zulad
    Homme Profil pro
    creatif
    Inscrit en
    Juin 2007
    Messages
    714
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : creatif

    Informations forums :
    Inscription : Juin 2007
    Messages : 714
    Par défaut
    ...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 ?

  10. #10
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 698
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 698
    Par défaut
    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

  11. #11
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 698
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 698
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    $resultat = $client->call('md5Value', array('value1', 'value2'));

  12. #12
    Membre très actif Avatar de zulad
    Homme Profil pro
    creatif
    Inscrit en
    Juin 2007
    Messages
    714
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : creatif

    Informations forums :
    Inscription : Juin 2007
    Messages : 714
    Par défaut
    Ca marche,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  13. #13
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Les commentaires jouent de plus en plus souvent un rôle
    Exemples :

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 02/03/2015, 11h06
  2. Réponses: 4
    Dernier message: 06/09/2014, 13h38
  3. Comment appeler une méthode python dans un xml?
    Par AmFaye2 dans le forum Odoo (ex-OpenERP)
    Réponses: 3
    Dernier message: 23/09/2013, 13h59
  4. Chargement de XML et appel de méthode?
    Par Dev@lone dans le forum ActionScript 3
    Réponses: 4
    Dernier message: 01/02/2010, 17h27
  5. Renvoyer du xml après appel à une méthode WCF
    Par 404error dans le forum Services Web
    Réponses: 13
    Dernier message: 07/08/2009, 12h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo