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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de bug

    Informations forums :
    Inscription : Janvier 2003
    Messages : 608
    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 : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de bug

    Informations forums :
    Inscription : Janvier 2003
    Messages : 608
    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