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 :

Consommation service web


Sujet :

Services Web

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Avatar de dkmix
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    619
    Détails du profil
    Informations personnelles :
    Localisation : Jamaïque

    Informations forums :
    Inscription : Septembre 2007
    Messages : 619
    Par défaut Consommation service web
    Bonjour.

    Je rencontre un problème dans la consommation d'un service web. Ce service web attends de recevoir une liste de SalesLines(chaque SalesLine à "Commande", "Produit","Quantite","DateConso")

    ***************************SERVICE WEB **************
    La fonction appelé par l'application (VB)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <WebMethod()> Public Function SetSQLLot(ByVal ListeCommandes As ArrayList) As Integer
    pour info : le début du corps de la methode (VB)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ...
     Commande = ListeCommandes(i)(0).GetElementsByTagName("Commande")(0).innerText
                        DateConso = ListeCommandes(i)(0).GetElementsByTagName("DateConso")(0).innerText
                        Produit = ListeCommandes(i)(0).GetElementsByTagName("Produit")(0).innerText
                        Quantite = ListeCommandes(i)(0).GetElementsByTagName("Quantite")(0).innerText
    ...
    ***************************APPLICATION**************

    Dans mon application, je fais référence au service web et j'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    WebReference1.Service serv = new WebReference1.Service();
    ...
    List<SalesLines> listSL = db.getSalesLines();
    
    // Service.SetSqlLot(object[] ListeCommandes)
    serv.SetSQLLot(???);
    ...
    Ma question est la suivante : En quoi dois-je caster mes objets SalesLines pour que le web service les reconnaissent.


    PS : le web service ne peut pas être modifié.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Ben le paramètre est déclaré comme ArrayList, donc il faut lui passer une ArrayList...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    serv.SetSQLLot(new ArrayList(listSL));

  3. #3
    Membre émérite
    Avatar de dkmix
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    619
    Détails du profil
    Informations personnelles :
    Localisation : Jamaïque

    Informations forums :
    Inscription : Septembre 2007
    Messages : 619
    Par défaut
    Merci de t interressé au pb

    effectivement j ais essayé quelque chose comme ca :

    class SalesLine
    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
     
     
    [serializable]
    public class SalesLines
    {
       [System.Xml.Serialization.XmlElement("Commande")]
       public string CommandeNo;
      [System.Xml.Serialization.XmlElement("DateConso")]
      public DateTime Date;
      [System.Xml.Serialization.XmlElement("Produit")]
      public String No;
      [System.Xml.Serialization.XmlElement("Quantite")]
      public int Quantite
     
       //pour les autres proprietes
       [NonSerialized]
      ....
     
    }
    et dans le process :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    WebReference1.Service serv = new WebReference1.Service();
    ...
    ArrayList myArrayList = new ArrayList();
     
    //pour chaque SalesLine(sl) que je dois ajouter
    myArrayList.add(sl);
     
    // Service.SetSqlLot(object[] ListeCommandes)
    serv.SetSQLLot(myArrayList);
    Il me repond qu il n'attend pas de SalesLine...
    Un Arraylist "de quoi ?" faut il lui envoyer

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par dkmix Voir le message
    Il me repond qu il n'attend pas de SalesLine...
    Bizarre... et sinon, c'est quoi la signature avec un object[] en commentaire ?
    Tu as essayer de passer un tableau d'objets ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    serv.SetSQLLot(listSL.Cast<object>().ToArray());
    (en supposant que tu sois en 3.5 ou supérieur)

  5. #5
    Membre émérite
    Avatar de dkmix
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    619
    Détails du profil
    Informations personnelles :
    Localisation : Jamaïque

    Informations forums :
    Inscription : Septembre 2007
    Messages : 619
    Par défaut
    Je suis en 2.0 et je n'ais pas tous les éléments pour passer en 3.5.

    Bizarre... et sinon, c'est quoi la signature avec un object[] en commentaire ?
    Tu as essayer de passer un tableau d'objets ?
    C'est ce que me met VS 2008 quand je passe (avec ma souri) sur la fonction SetSQLLot

    Infos complémentaires :

    Message d'erreur : Erreur lors de la génération du document XML.

    InnerException : Le type comm.fiches.SalesLine n'était pas attendu. Utilisez l'attribut XmlInclude ou SoapInclude pour spécifier les types qui ne sont pas connus statiquement.

    ------------------------------------------------------------------------

    Infos du service web :

    Le texte suivant est un exemple de demande et de réponse SOAP 1.2. Les espaces réservés affichés doivent être remplacés par des valeurs réelles.
    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
     
    POST /NAVWebservicesAjax/Service.asmx HTTP/1.1
    Host: 213.144.195.166
    Content-Type: application/soap+xml; charset=utf-8
    Content-Length: length
     
    <?xml version="1.0" encoding="utf-8"?>
    <soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
      <soap12:Body>
        <SetSQLLot xmlns="http://tempuri.org/">
          <ListeCommandes>
            <anyType />
            <anyType />
          </ListeCommandes>
        </SetSQLLot>
      </soap12:Body>
    </soap12:Envelope>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    HTTP/1.1 200 OK
    Content-Type: application/soap+xml; charset=utf-8
    Content-Length: length
     
    <?xml version="1.0" encoding="utf-8"?>
    <soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
      <soap12:Body>
        <SetSQLLotResponse xmlns="http://tempuri.org/">
          <SetSQLLotResult>int</SetSQLLotResult>
        </SetSQLLotResponse>
      </soap12:Body>
    </soap12:Envelope>

  6. #6
    Membre émérite
    Avatar de dkmix
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    619
    Détails du profil
    Informations personnelles :
    Localisation : Jamaïque

    Informations forums :
    Inscription : Septembre 2007
    Messages : 619
    Par défaut
    Si j envoie "Object[]" ca passe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     object[] objs = new Ojects[4];
    serv.SetSQLLot(objs );
    Comment je peux caster mes "SalesLine" en "Object" en c# 2.0 ?

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

Discussions similaires

  1. Consommer service web WSDL
    Par KoalaVS dans le forum Flex
    Réponses: 4
    Dernier message: 22/11/2013, 13h38
  2. Consommation Service Web avec Axis
    Par Wilkinson dans le forum Services Web
    Réponses: 2
    Dernier message: 30/07/2013, 14h07
  3. Consommer service web php en .NET
    Par Lope_ dans le forum Services Web
    Réponses: 1
    Dernier message: 19/02/2010, 09h04
  4. Erreur consommation service web
    Par manu11 dans le forum Services Web
    Réponses: 0
    Dernier message: 19/10/2009, 21h51
  5. Consommation service Web sous Vista
    Par sandre dans le forum C#
    Réponses: 14
    Dernier message: 16/03/2007, 19h11

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