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

XML/XSL et SOAP Discussion :

Description WSDL


Sujet :

XML/XSL et SOAP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 189
    Par défaut Description WSDL
    Bonjour à tous,

    Quelqu'un serait'il me dire ou est l''erreur ( ou les erreurs :\) dans mon fichier wsdl ?
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    <?xml version="1.0" encoding="utf-8"?>
    <wsdl:definitions targetNamespace="ipinte.vlsm.fr"  xmlns:tns="http://ipinte.vlsm.fr/testwb/"  xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" >
    	<wsdl:types>
    		<xsd:schema elementFormDefault="qualified" targetNamespace="ipinte.vlsm.fr">
    			<xsd:element name="GetCountNewRecRequest">
    				<xsd:complexType>
    					<xsd:sequence>
    						<xsd:element name="table" type="xsd:string" />
    						<xsd:element name="date" type="xsd:string" />
    					</xsd:sequence>
    				</xsd:complexType>
    			</xsd:element>
    			<xsd:element name="GetCountNewRecResponse">
    				<xsd:complexType>
    					<xsd:sequence>
    						<xsd:element name="countRes" type="xsd:string" />
    					</xsd:sequence>
    				</xsd:complexType>
    			</xsd:element>
    		</xsd:schema>
    	</wsdl:types>
     
    	<wsdl:message name="GetCountNewRecSoapIn">
    		<wsdl:part name="parameters" element="tns:GetCountNewRecRequest" />
    	</wsdl:message>
    	<wsdl:message name="GetCountNewRecSoapOut">
    		<wsdl:part name="parameters" element="tns:GetCountNewRecResponse" />
    	</wsdl:message>
     
    	<wsdl:portType name="UpdatePortType">
    		<wsdl:operation name="GetCountNewRec">
    			<wsdl:documentation></wsdl:documentation>
    			<wsdl:input message="tns:GetCountNewRecSoapIn"/>
    			<wsdl:output message="tns:GetCountNewRecSoapOut"/>
    		</wsdl:operation>
    	</wsdl:portType>
     
    	<wsdl:binding name="UpdateBinding" type="tns:UpdatePortType">
    		<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="rpc" />
    		<wsdl:operation name="GetCountNewRec">
    			<soap:operation/>
    			<wsdl:input>
    				<soap:body use='literal' namespace='http://www.ericmery.fr/ns'/>
    			</wsdl:input>
    			<wsdl:output>
    				<soap:body use='literal' namespace='http://www.ericmery.fr/ns'/>
    			</wsdl:output>
    		</wsdl:operation>
    	</wsdl:binding>
     
     
    	<wsdl:service name="GlobalIpinte">
    		<wsdl:port name="UpdatePort" binding="tns:UpdateBinding">
    			<soap:address location="http://ipinte.vlsm.fr/testwb/admin.php" />
    		</wsdl:port>
    	</wsdl:service>
    </wsdl:definitions>
    :

    Le fichier admin.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    		function GetCountNewRec($table,$date) { 
    			$countRes = "test";
    			return $countRes."Hello  !"; 
    		} 
     
    	$server = new SoapServer("ipinte.wsdl", array("soap_version" => SOAP_1_1));
    	// $server = new SoapServer(null, array('uri' => 'http://ipinte.vlsm.fr/admin/admin.php'));
    	$server->addFunction("GetCountNewRec"); 
    	$server->handle();

    Car lorsque je le teste avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
    $client = new SoapClient("ipinte.wsdl");
    var_dump($client->GetCountNewRec("a","a"));
    ?>
    J'obtient le retour suivant :
    object(stdClass)#2 (0) { }

    J'ai retourné et refait le fichier X fois, mais je n'arrive pas à résoudre mon problème.


    Merci par avance à celui qui sera m'éclairer.

  2. #2
    Membre Expert Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Par défaut
    Il peut y avoir d'autres problèmes, mais de par le sens de vos constructions, ceci est certainement incorrect, viz, le namespace uri avec le préfixe tns doit être exactement le même de ce que le targetNamespace prends: c'est-à-dire, essayez ce changement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    targetNamespace="ipinte.vlsm.fr" xmlns:tns="ipinte.vlsm.fr"

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 189
    Par défaut
    Merci de vous être penché sur mon sujet. J'ai apporté le correctif, mais cela n'a pas résolu le problème.

    J'ai construit le WSDL à partir d'exemple à droite et à gauche, j'ai peut être commis d'autres erreurs. Les 2 fichiers php ( server et client ) me semble très light pour faire des tests et semble être cohérent.

    Les fichiers sont en ligne pour faire des tests si nécéssaire.

    J'ai modifié mon fichier WSDL
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    <?xml version ='1.0' encoding ='UTF-8' ?>
    <definitions name='Ipinte' targetNamespace='ipinte.vlsm.fr' xmlns:tns='ipinte.vlsm.fr' xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:soapenc='http://schemas.xmlsoap.org/soap/encoding/' xmlns:wsdl='http://schemas.xmlsoap.org/wsdl/' xmlns='http://schemas.xmlsoap.org/wsdl/'>
    	<wsdl:types>
    		<xsd:schema elementFormDefault="qualified" targetNamespace="ipinte.vlsm.fr">
    			<xsd:element name="GetCountNewRecRequest">
    				<xsd:complexType>
    					<xsd:sequence>
    						<xsd:element name="table" type="xsd:string" />
    						<xsd:element name="date" type="xsd:string" />
    					</xsd:sequence>
    				</xsd:complexType>
    			</xsd:element>
    			<xsd:element name="GetCountNewRecResponse">
    				<xsd:complexType>
    					<xsd:sequence>
    						<xsd:element name="countRes" type="xsd:string" />
    					</xsd:sequence>
    				</xsd:complexType>
    			</xsd:element>
    		</xsd:schema>
    	</wsdl:types>
     
    	<wsdl:message name="GetCountNewRecSoapIn">
    		<wsdl:part name="GetCountNewRec" element="tns:GetCountNewRecRequest" />
    	</wsdl:message>
    	<wsdl:message name="GetCountNewRecSoapOut">
    		<wsdl:part name="GetCountNewRec" element="tns:GetCountNewRecResponse" />
    	</wsdl:message>
     
    	<wsdl:portType name="UpdatePortType">
    		<wsdl:operation name="GetCountNewRec">
    			<wsdl:input message="tns:GetCountNewRecSoapIn"/>
    			<wsdl:output message="tns:GetCountNewRecSoapOut"/>
    		</wsdl:operation>
    	</wsdl:portType>
     
    	<wsdl:binding name="UpdateBinding" type="tns:UpdatePortType">
    		<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
    		<wsdl:operation name="GetCountNewRec"  >
    			<soap:operation soapAction="http://ipinte.vlsm.fr/testwb/admin"/>
    			<wsdl:input>
    				<soap:body use='literal'/>
    			</wsdl:input>
    			<wsdl:output>
    				<soap:body use='literal'/>
    			</wsdl:output>
    		</wsdl:operation>
    	</wsdl:binding>
     
     
    	<wsdl:service name="GlobalIpinte">
    		<wsdl:port name="UpdatePort" binding="tns:UpdateBinding">
    			<soap:address location="http://ipinte.vlsm.fr/testwb/admin.php" />
    		</wsdl:port>
    	</wsdl:service>
    </definitions>
    Maintenant j'obtient le message :
    Fatal error: Uncaught SoapFault exception: [SOAP-ENV:Client] Error cannot find parameter in /home/vlsm/sd/ipinte/www/testwb/test.php:3 Stack trace: #0 [internal function]: SoapClient->__call('GetCountNewRec', Array) #1 /home/vlsm/sd/ipinte/www/testwb/test.php(3): SoapClient->GetCountNewRec('a', 'a') #2 {main} thrown in /home/vlsm/sd/ipinte/www/testwb/test.php on line 3

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 189
    Par défaut
    J'avance petit à petit :

    Quelqu'un pourrait me dire à quoi correspond :
    <definitions name='Ipinte' targetNamespace='ipinte.vlsm.fr' xmlns:tns='ipinte.vlsm.fr' ...

    J'ai lu que cela représenté un espace de nom, que le tns sert ensuite de préfixe, mais concrètement ... il y a quoi derrière ? (un listing des méthodes disponibles ?? )

    Car j'ai recommencé à partir d'un exemple et si je change cette valeur cela ne fonctionne plus.

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Un espace de nom c'est un espace de nom, il y a rien derrière, c'est ce que c'est. Une recherche Google l'explique parfaitement.

    xmlns:tns='ipinte.vlsm.fr' indique que dans tout ce qui est à sa portée,
    chaque fois qu'on met un nom qualifié qui commence par tns:, ce nom sera sera dans l'espace de nom ipinte.vlsm.fr (et aucun autre espace de nom que celui-ci.)

    C'est important parce que ça identifie la chose nommée. Si on donne le même nom mais pas le même espace de nom (ou aucun espace de nom,) alors on ne parle pas de la même chose. Donc les deux trucs qu'on essayait de relier ensemble ne sont pas reliés ensemble, car l'un des deux n' a pas été reconnu, puisque mal nommé.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 189
    Par défaut
    Merci pour la précision

    Je bloque également sur la portée des paramètres

    Extrait du WSDL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
          <xsd:element name="GetNeedUpdateRequest" type="tns:GetNeedUpdateRequestType" />
          <xsd:element name="GetNeedUpdateResponse" type="tns:GetNeedUpdateResponseType" />
     
          <xsd:complexType name="GetNeedUpdateRequestType">
          	<xsd:sequence>
          		<xsd:element maxOccurs="1" minOccurs="1" name="LastDate" type="xsd:int" />
          	</xsd:sequence>
          </xsd:complexType>
     
          <xsd:complexType name="GetNeedUpdateResponseType">
          	<xsd:sequence>
          		<xsd:element name="NeedUpdate" type="xsd:boolean" />
          	</xsd:sequence>
          </xsd:complexType>
    Dans mon fichier de traitement; j'ai mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function GetNeedUpdate($LastDate) {
    global $Req_Brasserie_select1,$Req_Brasserie_insert2,$LastDate;	$Req_Brasserie_insert2->execute(array("Nom:".$LastDate.$GetNeedUpdateRequestType->LastDate.$GetNeedUpdateRequest->LastDate));
    $Req_Brasserie_select1->execute(array($GetNeedUpdateRequest->LastDate));
    if ($Req_Brasserie_select1->rowcount()>0) $GetNeedUpdateResponse->NeedUpdate = true; else $GetNeedUpdateResponse->NeedUpdate = true;
    		
    return $GetNeedUpdateResponse;
    	}
    J'ai essayé plusieurs méthodes pour récupérer la valeur du paramètre LastDate, mais sans succès.

    Auriez vous une piste ?


    JE ne sais pas si c'est la meilleure méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function GetNeedUpdate($GetNeedUpdateRequest) {

  7. #7
    Membre Expert Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function GetNeedUpdate($LastDate) {
    global $Req_Brasserie_select1,$Req_Brasserie_insert2,$LastDate;
    //etc...
    }
    Cela déjà, ce n'est pas valable ou bien on ne sait pas de quoi vous voulez dire. Si $LastDate est déclaré globale là, l'argument passé à la fonction GetNeedUpdate ne devient pas effectif du tout?

    Est-ce que le service web que vous travaillez sur est changant au fur et à mesure parmi vos différents messages? Je crois voir un wsdl d'après Registration de Herong Yang mais modifié correctement ou incorrectement dans le premier message via le hyperlien (avec .../admin.php?wsdl) ce qui était déjà très different de ce que vous avez montré dans le texte du message. Et maintenant, c'est bien encore complètement d'autre chose? On perd un peu beaucoup de l'objet de la question...

Discussions similaires

  1. Comment obtenir la description des tables par SQL
    Par rcastaldi dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 15/03/2004, 14h13
  2. [WebService]Fichier Java et WSDL associé pour Web Services
    Par P4_le_requin_breton dans le forum Services Web
    Réponses: 9
    Dernier message: 23/02/2004, 12h55
  3. [MFC] TODO description du fichier
    Par Gothico dans le forum MFC
    Réponses: 2
    Dernier message: 06/01/2004, 11h17
  4. Description complète d'un processeur
    Par tripper.dim dans le forum Composants
    Réponses: 5
    Dernier message: 02/10/2003, 19h35
  5. [Kylix] Kylix 3 & WSDL
    Par cpu dans le forum EDI
    Réponses: 2
    Dernier message: 10/10/2002, 12h39

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