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

Services Web Java Discussion :

Quelle est la différence entre ça et ça ?


Sujet :

Services Web Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 62
    Par défaut Quelle est la différence entre ça et ça ?
    Bonjour,

    Regardez bien ces deux requêtes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:aut="http://myhostname/webservices/MyService/">
       <soapenv:Header/>
       <soapenv:Body>
          <aut:getTokenRequest>
             <username>toto</username>
             <password>titi</password>
              <sessionTimeout>30</sessionTimeout>
          </aut:getTokenRequest>
       </soapenv:Body>
    </soapenv:Envelope>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <SOAP-ENV:Envelope 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">
      <SOAP-ENV:Body>
        <getTokenRequest xmlns="http://myhostname/webservices/MyService/">
          <username>toto</username>
          <password>titi</password>
          <sessionTimeout>30</sessionTimeout>
        </getTokenRequest>
      </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>
    Dans l'une, on définit le raccourci "aut" comme "xmlns:aut="http://myhostname/webservices/MyService/"" dans l'autre, on met directement "xmlns="http://myhostname/webservices/MyService/"".

    Et bien, pour le service que j'ai développé, seule la première Request passe. La seconde sort une exception, pourquoi ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    org.apache.axis2.databinding.ADBException: Unexpected subelement username
    J'ai essayé ces deux types de requête avec d'autres services (qui n'ont pas été fait par moi) et les deux fonctionnent très bien.
    Qu'est-ce que j'ai fait dans mon WSDL (ou ma génération de classes wsdl2Java) pour que la deuxième requête ne fonctionne pas ?

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    au niveau xml, dans la première requete les balises username, password et sessionTimeout ne font pas partie d'un namespace particulier.

    Dans la deuxième, comme tu as défini un namespace par défaut sur <getTokenRequest xmlns="http://myhostname/webservices/MyService/">, ces trois balises sont recherchées dans ce namespace (qui, apparament, n'a pas les balises en question)

    Pour revenir à la meme signification que le premier xml, il faudrait, il me semble, faire ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <SOAP-ENV:Envelope 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">
      <SOAP-ENV:Body>
        <getTokenRequest xmlns="http://myhostname/webservices/MyService/">
          <username xmlns="">toto</username>
          <password xmlns="">titi</password>
          <sessionTimeout xmlns="">30</sessionTimeout>
        </getTokenRequest>
      </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 62
    Par défaut
    Merci pour ta réponse.
    Bien joué, en effet, si je rajoute " xmlns="" " pour chaque attribut, cela fonctionne.

    Néanmoins, les deux types de requête fonctionne avec la plupart des WebServices mais pas pour le mien.
    Le problème est que la deuxieme requete est générée automatiquement par Flex, donc je n'ai pas la main dessus et je ne peux rajouter le " xmlns="" " pour chaque attribut. Il y a t-il un moyen de modifier mon WSDL ou mon WebService en général pour permettre la seconde requete ?

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    il suffirait, je pense, de rajouter ces trois tags dans le shéma défini en "http://myhostname/webservices/MyService/, ce qui me semblerais d'ailleurs logique (ne pas utiliser le namespace vide).

    Si ca marche pour la pluspart des webservices, c'est que la pluspart des webservice sont assez laxistes sur le respect des namespaces. Un fois le tag enveloppe décripté, il balance le contenu a uwebservice sans le valider, ca permet de meilleures performance mais c'est pas tout a fait xml correct.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 62
    Par défaut
    Merci pour ta réponse.

    Qu'entends-tu par "rajouter les 3 tags dans le schéma" ?

    En tout cas, j'ai continué d'enquêter de mon côté et j'ai remarqué que si j'ajoutais " elementFormDefault="qualified" " dans le schéma, cela fonctionnait !

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    il faut que username, password et l'autres soient défini dans le shéma:

    http://myhostname/webservices/MyService/

    mais vu ta correction, je suppose que c'était déjà le cas, mais mal

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 01/06/2010, 16h57
  2. Réponses: 2
    Dernier message: 25/05/2005, 21h34
  3. Réponses: 5
    Dernier message: 03/05/2005, 18h22
  4. Réponses: 11
    Dernier message: 31/01/2005, 17h48
  5. Quelle est la différence entre le float et le real ?
    Par Manson dans le forum Débuter
    Réponses: 3
    Dernier message: 10/08/2004, 17h26

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