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

APIs XML Discussion :

Impossible d'importer la liaison binding à partir de l'espace de nom (WSDL - SOAP) [SOAP]


Sujet :

APIs XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2017
    Messages : 4
    Par défaut Impossible d'importer la liaison binding à partir de l'espace de nom (WSDL - SOAP)
    Bonjour, j'ai rédigé mon premier Webservice en SOAP(pas le savon ^^). Je me retrouve, en chargeant celui-ci via Wizdl avec l'erreur suivante :

    Nom : Erreur Wizdl.PNG
Affichages : 948
Taille : 28,7 Ko

    Je vous joint mon code :
    test.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
    58
    59
    60
    61
     
     
    <?xml version="1.0" encoding="iso-8859-1"?>
    <wsdl:definitions
     xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
     xmlns:xsd="http://www.w3.org/2001/XMLSchema"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
     xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
     xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
     xmlns="http://schemas.xmlsoap.org/wsdl"
     
    	  targetNamespace="urn:serviceTestwsdl"
    	  xmlns:tns="urn:serviceTestwsdl"
      >
     
     
      <wsdl:types>
        <xsd:schema targetNamespace="urn:serviceTestwsdl"/>
        <xsd:import namespace="http://schemas.xmlsoap.org/soap/encoding/" />
        <xsd:import namespace="http://schemas.xmlsoap.org/wsdl/" />
      </wsdl:types>
     
      <message name="getStringRequest">
      </message>
      <message name="getStringResponse">
        <part name="return" type="xsd:string" />
      </message>
     
      <wsdl:portType name="serviceTestPortType">
     
        <wsdl:operation name="getString">
          <documentation>Récupère un string</documentation>
          <input message="tns:getStringRequest"/>
          <output message="tns:getStringResponse"/>
        </wsdl:operation>
      </wsdl:portType>
     
     
      <wsdl:binding name="serviceTestBinding" type="tns:serviceTestPortType">
     
        <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
     
        <wsdl:operation name="getString">
          <soap:operation soapAction="urn:serviceTestwsdl#getStringServeur" style="rpc"/>
          <wsdl:input>
            <soap:body use="encoded" namespace="urn:serviceTestwsdl" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
          </wsdl:input>
          <wsdl:output>
            <soap:body use="encoded" namespace="urn:serviceTestwsdl" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
          </wsdl:output>
        </wsdl:operation>
      </wsdl:binding>
     
      <wsdl:service name="serviceTest">
        <wsdl:port name="serviceTestPort" binding="tns:serviceTestBinding">
          <soap:address location="http://localhost/testSolution/testSolution.php"/>
        </wsdl:port>
     
      </wsdl:service>
    </wsdl:definitions>
    Et voici mon php : testSolution.php :

    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
     
    <?php
     
    class Ws{
     
    	  function getString()
    	  {
    	  	return "TESTASTOS";
    	  }
    	}
     
    ini_set("soap.wsdl_cache_enabled", 0);
     
    $serversoap = new SoapServer("http://localhost/testSolution/test.wsdl");
     
    $serversoap->setClass("Ws");
     
    $serversoap->handle();
     
    ?>
    Merci d'avance

    Meilleurs regards ☻♥

  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
    C'est probablement qu'on suive des exemples par-ci par-là pour arriver à un wsdl comme cela. Quoique confusant, il faut le faire correctement. Les éléments message sont placés dans un namespace par défaut qui coincide avec le namespace préfixé par wsdl. Donc, il vaut mieux d'enlever la déclaration du namespace par défaut la ligne xmlns="..." et appliquer le préfix wsdl sur les éléments message, c'est-à-dire mettez partout wsdl:message au lieu de message tout bêtement.

    Il vaut mieux, c'est vrai, mais si on fait comme montrer, il faut faire correctement. Voyez ces deux lignes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
    et puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     xmlns="http://schemas.xmlsoap.org/wsdl"
    Que les uri soient différents, c'est clair. C'est le premier uri de namespace qui est correct. Le deuxième doit s'écrire comme le premier.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     xmlns="http://schemas.xmlsoap.org/wsdl/"
    Il devrait marcher après la correction.

    Un issue à part qui ne bloque pas le bon fonctionnement est qu'il n'est pas nécessaire d'importer les namespaces préfixés de SOAP-ENC et wsdl. Ils sont des namespaces "bien connus" du moteur et par conséquence leur importation n'est pas nécessaire: ici, je veux dire enlever les deux xsd:import dedans la section xsd:schema. Et, d'ailleurs, les deux lignes sont mal placées en tout cas: elles doivent d'être comme enfants de xsd:schema si vous insistez de les mettre. Il y a une notion de wsdl:import, mais ce n'est pas la même chose.

    Voilà !

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2017
    Messages : 4
    Par défaut
    Citation Envoyé par tsuji Voir le message
    C'est probablement qu'on suive des exemples par-ci par-là pour arriver à un wsdl comme cela. Quoique confusant, il faut le faire correctement. Les éléments message sont placés dans un namespace par défaut qui coincide avec le namespace préfixé par wsdl. Donc, il vaut mieux d'enlever la déclaration du namespace par défaut la ligne xmlns="..." et appliquer le préfix wsdl sur les éléments message, c'est-à-dire mettez partout wsdl:message au lieu de message tout bêtement.

    Il vaut mieux, c'est vrai, mais si on fait comme montrer, il faut faire correctement. Voyez ces deux lignes:

    et puis

    Que les uri soient différents, c'est clair. C'est le premier uri de namespace qui est correct. Le deuxième doit s'écrire comme le premier.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     xmlns="http://schemas.xmlsoap.org/wsdl/"
    Il devrait marcher après la correction.

    Un issue à part qui ne bloque pas le bon fonctionnement est qu'il n'est pas nécessaire d'importer les namespaces préfixés de SOAP-ENC et wsdl. Ils sont des namespaces "bien connus" du moteur et par conséquence leur importation n'est pas nécessaire: ici, je veux dire enlever les deux xsd:import dedans la section xsd:schema. Et, d'ailleurs, les deux lignes sont mal placées en tout cas: elles doivent d'être comme enfants de xsd:schema si vous insistez de les mettre. Il y a une notion de wsdl:import, mais ce n'est pas la même chose.

    Voilà !
    Merci beaucoup pour ton aide, cela fonctionne parfaitement

    Big bisous ☻♥

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

Discussions similaires

  1. Impossible d'importer un fichier csv dans une table sous MySQL
    Par manue85 dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 20/04/2006, 12h06
  2. Réponses: 10
    Dernier message: 18/03/2006, 12h35
  3. importer une image a partir d'un formulaire
    Par Malo dans le forum Général Conception Web
    Réponses: 3
    Dernier message: 16/03/2006, 09h08
  4. Impossible d'importer un fichier excel
    Par _developpeur_ dans le forum Access
    Réponses: 2
    Dernier message: 24/01/2006, 12h21
  5. [Info]Impossible d'importer
    Par arsenik7 dans le forum Eclipse Java
    Réponses: 7
    Dernier message: 20/12/2005, 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