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

Langage PHP Discussion :

xmlrpc (No method matching arguments) : Mauvaise conception ?!


Sujet :

Langage PHP

  1. #1
    Membre éclairé Avatar de tigunn
    Homme Profil pro
    Développeur de bug
    Inscrit en
    Janvier 2003
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de bug

    Informations forums :
    Inscription : Janvier 2003
    Messages : 608
    Points : 658
    Points
    658
    Par défaut xmlrpc (No method matching arguments) : Mauvaise conception ?!
    Salut a tous,

    Je voulais vous présenter un beau modèle de problème conceptuel, je suppose (groos sigh!) .
    Voici, j'ai créer une classe pour regrouper toutes mes requêtes xquery sur une (et une seule base exist-db , c-a-d xml ). Voici comment elle se présente:
    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
    37
    38
    39
    40
    Class xqueryBP {
    	public $db;
     
    	function __construct() {
    		//	création d'une instance EXIST
    		$db2 = new eXist (EXIST_PATH,EXIST_SERVER,EXIST_PORT);
    		$db2->setCredentials (EXIST_USER,EXIST_PASSWORD);
    		$db2->setParamIndent (false);
    		//	Pour le debugage
    		$db2->setDebug(DEBUG);
    		$this->db=$db2;		
    	}
     
    	/**
    	 * Retourne le fragment tei définit par sa cote et son numéro d'ordre
    	 *
    	 * @param string 	$doc			cote de la page ou se trouve le fragment
    	 * @param int		$num_frag		N° d'ordre du fragment dans la page
    	 * @return string	chaine XML contenant le fragment
    	 */
    	public function getFragmentCoteNo($doc, $num_frag) {
    		$_XQUERY1 = 'declare namespace dbp="http://blabla/ns/1.0";
    			let $doc := doc("'.COLLECTION.'/'.$doc.'")
    			for $fragment in $doc//*:div[@*:type="fragment"]|$doc//*:item[@*:type="fragment"] 
    			let $bibl := data($fragment/*:cit/*:bibl)
    			let $lbl_head := $fragment/parent::*/*:head//*:term
    			let $lbl_list := $fragment/parent::*:list/parent::*:item/preceding-sibling::*:label[1]//*:term
    			let $lbl_prec := $fragment/preceding-sibling::*:label[1]//*:term|$fragment/preceding-sibling::*:div[@*:type="label"]//*:term
    			let $quote := data($fragment/*:cit/*:quote) where $fragment[@n="'.$num_frag.'"]
    				return <item>
    							<head>{$lbl_head}</head>
    							<label_list>{$lbl_list}</label_list>
    							<label>{$lbl_prec}</label>
    							<fragment>{$quote}</fragment>
    							<bibl>{$bibl}</bibl>
    						</item>';
    		$result1 = $this->db->executeQuery($_XQUERY1);
    		return $this->db->retrieve($result1, 0);		
    	}
    }
    Pour info, la requête est bonne; si je l'affiche j'ai :
    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
    declare namespace dbp="http://blabla/ns/1.0";
    			let $doc := doc("/db/ma_base/g226_3_f_015__r____-ver3.xml")
    			for $fragment in $doc//*:div[@*:type="fragment"]|$doc//*:item[@*:type="fragment"] 
    			let $bibl := data($fragment/*:cit/*:bibl)
    			let $lbl_head := $fragment/parent::*/*:head//*:term
    			let $lbl_list := $fragment/parent::*:list/parent::*:item/preceding-sibling::*:label[1]//*:term
    			let $lbl_prec := $fragment/preceding-sibling::*:label[1]//*:term|$fragment/preceding-sibling::*:div[@*:type="label"]//*:term
    			let $quote := data($fragment/*:cit/*:quote) where $fragment[@n="1"]
    				return <item>
    							<head>{$lbl_head}</head>
    							<label_list>{$lbl_list}</label_list>
    							<label>{$lbl_prec}</label>
    							<fragment>{$quote}</fragment>
    							<bibl>{$bibl}</bibl>
    						</item>
    Jusqu'à maintenant, cette classe ne m'avait pas posé de problème, et la méthode définit plus haut fonctionne correctement partout où je l'ai utilisée.

    Par contre dans la page ci-dessous elle génère une erreur et plante:
    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
    $nb_fragments=$label_en_cours->getNbFragmentsAssociesDansBdd();
    		$num_fragment=0;
    		$xml=null;
    		$affichage_possible=true;
    		while ($num_fragment < $nb_fragments) {
    			$fragment_en_cours = $label_en_cours->getFragment($num_fragment);
    			//	definition de la cote et du numéro de fragment
    			$ref_bib_doc = $fragment_en_cours->fragment->getCote();	$ref_bib_num_frag=$fragment_en_cours->fragment->getNumeroFragment();
    			$affichage_possible=true;
    			if (($ref_bib_doc=='') || ($ref_bib_num_frag=='')) {
    				$affichage_possible=false;
    			}
    			else {
    				$ref_bib_doc .= '-ver3.xml';
    				$fragment='';
    html::dbg('ref_bib_doc='.$ref_bib_doc.'<br/>ref_bib_num_frag='.$ref_bib_num_frag);
    				$db_xml = new xqueryBP();
    		$fragment=$db_xml->getFragmentCoteNo($ref_bib_doc, $ref_bib_num_frag);
    //....affiche le résultat de la méthode ci-dessus, enfin normalement
    }
    }
    En fait, sur cette page la méthode plante et le message retourné par Exist est :
    ---GOT---
    HTTP/1.1 200 OK
    Date: Wed, 18 Jan 2012 09:53:28 GMT
    Server: Jetty/5.1.12 (Linux/2.6.24-30-server amd64 java/1.6.0_18
    Content-Length: 363
    Content-Type: text/xml
    Connection: close

    <?xml version="1.0" encoding="UTF-8"?><methodResponse xmlns:ex="http://ws.apache.org/xmlrpc/namespaces/extensions"><fault><value><struct><member><name>faultCode</name><value><i4>0</i4></value></member><member><name>faultString</name><value>No method matching arguments: java.lang.String, java.lang.String</value></member></struct></value></fault></methodResponse>
    ---END---

    HEADER: HTTP/1.1 200 OK
    HEADER: Date: Wed, 18 Jan 2012 09:53:28 GMT
    HEADER: Server: Jetty/5.1.12 (Linux/2.6.24-30-server amd64 java/1.6.0_18
    HEADER: Content-Length: 363
    HEADER: Content-Type: text/xml
    HEADER: Connection: close

    ---EVALING---[170 chars]---
    new xmlrpcval(array('faultCode' => new xmlrpcval(0, ''),'faultString' => new xmlrpcval("No method matching arguments: java.lang.String, java.lang.String", '')), 'struct');
    ---END---
    Je comprends pas, et cela me bloque .
    Merci pour toute aide.

    remarque: j'ai essayé de copier ma méthode directement sur la page php mais cela ne change rien; j'ai essayé de créer un singleton de XQueryBP mais sans de meilleurs résultats .

  2. #2
    Membre éclairé Avatar de tigunn
    Homme Profil pro
    Développeur de bug
    Inscrit en
    Janvier 2003
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de bug

    Informations forums :
    Inscription : Janvier 2003
    Messages : 608
    Points : 658
    Points
    658
    Par défaut
    Bonjour
    Finalement, après que je me sois occuper d'un autre développement, bien plus urgent, je suis revenu sur ce problème.
    En fait, c'était juste un include oublié .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    require_once('classes/exist_phpapi.inc');
    Merci à tous.

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

Discussions similaires

  1. la methode match me retourne le resultat le plus court
    Par Folkene dans le forum Windows Forms
    Réponses: 6
    Dernier message: 24/08/2009, 20h45
  2. Passer une methode en argument
    Par archer dans le forum C#
    Réponses: 1
    Dernier message: 06/08/2008, 16h42
  3. passage d'une methode avec argument
    Par skanderb dans le forum JSF
    Réponses: 27
    Dernier message: 27/04/2007, 17h36
  4. [method post] argument qui ne passe pas
    Par crevettes59000 dans le forum Langage
    Réponses: 3
    Dernier message: 30/12/2005, 15h11
  5. mauvaise conception et changement de clé primaire
    Par delphim dans le forum Schéma
    Réponses: 4
    Dernier message: 21/05/2004, 11h39

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