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 Discussion :

Web Service RPC/Encoded (IsNullable Attribute)


Sujet :

Services Web

  1. #1
    Candidat au Club
    Inscrit en
    Décembre 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 2
    Points : 4
    Points
    4
    Par défaut Web Service RPC/Encoded (IsNullable Attribute)
    En utilisant le code suivant dans un type complexe par un web service
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    [System.Xml.Serialization.XmlElementAttribute(IsNullable=false)]
    	public string CorporateName;
     
    	/// <remarks/>
    	[System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]
    	public string Type;
     
    	/// <remarks/>
    	[System.Xml.Serialization.XmlElementAttribute(IsNullable=false)]
    	public string ID;

    Le résultat de ces champs dans le WSDL sera :

    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
       <s:element minOccurs="0" maxOccurs="1" name="CorporateName" type="s:string" /> 
      <s:element minOccurs="1" maxOccurs="1" name="Type" nillable="true" type="s:string" /> 
      <s:element minOccurs="0" maxOccurs="1" name="ID" type="s:string" />

    Avec nillable=true pour les champs ayant IsNullable=true,
    Et minOccurs= pour les champs ayant IsNullable=false

    Mais au mode RPC/Encoded , le WSDL est :

    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
       <s:element minOccurs="1" maxOccurs="1" name="CorporateName" type="s:string" /> 
      <s:element minOccurs="1" maxOccurs="1" name="Type" type="s:string" /> 
      <s:element minOccurs="1" maxOccurs="1" name="ID" type="s:string" />

    Pas de minOccurs=0 et pas de nillable=”true”, donc la propriété XmlElementAttribute n’est pas prise en compte dans le mode WSDL.


    Pourriez vous m’aider a résoudre ce problème.
    Merci

  2. #2
    Membre expérimenté
    Avatar de Mehdi Feki
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 113
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 113
    Points : 1 566
    Points
    1 566
    Par défaut
    Salut et merci pour ce fil.

    Lorsque le parametred'encodage est de type Encoded alors il faut utiler SoapElement au lieu de XMLElement pour serialiser les attributs, Voici ce que j'obtients :


    Code C# : 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
    [SoapRpcService(Use = SoapBindingUse.Encoded)]
    public class HelloWorld : System.Web.Services.WebService
    {
     
        public class perso
        {
            [System.Xml.Serialization.SoapElement(IsNullable=true)]
            public string CorporateName;
            [System.Xml.Serialization.SoapElement(IsNullable = true)]
            public string Type;
            [System.Xml.Serialization.SoapElement(IsNullable = false)]
            public string ID;
        }
        [WebMethod]
        public void HelloWorldService(perso p)
        {
     
        }
    }

    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <wsdl:types>
    - <s:schema elementFormDefault="qualified" targetNamespace="http://tempuri.org/">
    - <s:complexType name="perso">
    - <s:sequence>
      <s:element minOccurs="0" maxOccurs="1" form="unqualified" name="CorporateName" nillable="true" type="s:string" /> 
      <s:element minOccurs="0" maxOccurs="1" form="unqualified" name="Type" nillable="true" type="s:string" /> 
      <s:element minOccurs="0" maxOccurs="1" form="unqualified" name="ID" type="s:string" /> 
      </s:sequence>
      </s:complexType>
      </s:schema>
      </wsdl:types>

    déja l'attribut nillable apparait et tu pourrais résoudre ton probleme avec.

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

Discussions similaires

  1. appel web service soap rpc-encoded multi-ref
    Par arnaud.b dans le forum Pentaho
    Réponses: 0
    Dernier message: 18/01/2010, 15h33
  2. Réponses: 17
    Dernier message: 29/05/2009, 09h30
  3. [XML-RPC] Web Services
    Par flykev dans le forum ASP
    Réponses: 1
    Dernier message: 14/05/2009, 15h24
  4. Encoding Style - web services
    Par senga82 dans le forum Services Web
    Réponses: 1
    Dernier message: 18/07/2006, 12h36
  5. Web Services : Mode Message/Document et Mode RPC
    Par Le Singe dans le forum Services Web
    Réponses: 3
    Dernier message: 07/02/2006, 13h39

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