Tableau passé en paramètre d'un webservice..

Résolu
cs_AmK Messages postés 368 Date d'inscription jeudi 13 mars 2003 Statut Membre Dernière intervention 27 janvier 2010 - 26 mars 2008 à 22:23
cs_ranas Messages postés 2 Date d'inscription vendredi 20 février 2009 Statut Membre Dernière intervention 31 mars 2011 - 31 mars 2011 à 13:14
Bonjour,


J'ai remarqué lors de mes développements que lorsque je passe un
tableau en paramètre à une webméthode , la valeur de ses éléments ne
sont pas modifiées après l'appel à cette web méthode ( ils le seraient
lors de l'appel d'une méthode classique ) est ce vrai ?


y'aurait il un moyen de contourner le problème , car j'ai une liste de
valeurs à renvoyer dont je ne connais pas la taille au préalable. J'ai
essayé avec List<> mais ce n'est pas sériaisable.


Une suggestion ?


Merci !

6 réponses

billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
27 mars 2008 à 09:15
Quelques erreurs lors de ma saisie et quelques précisions:
- Dans le code, tous les mots "List" sont à remplacer par List (merci à la textbox évoluée de codesource avec opéra qui a masqué ceci ^^)
- La dernière ligne de code est plutôt List list = (List)ser.Deserialize(sr);//Et non pas xmlSer ^^

De plus, il te faudra ajouter les namespaces suivant:
using System.Xml.Serialization;//Pour XmlSerializer
using System.IO;//Pour StringWriter et StringReader

Sur ce, je crois que c'est tout !

Billou_13
3
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
27 mars 2008 à 09:09
Bonjour


Effectivement, un bon moyen (que j'utilise particulièrement) consiste à sérialiser son objet avant de la passer en paramètre à une méthode web service. De même le retour de celle-ci peut renvoyer un objet sérialisé.

Et tu peux sérialiser tout ce que tu veux; même les List<>.


Essais donc avec ce code :

XmlSerializer ser = new XmlSerializer(typeof(List));//ou tout autre type

StringWriter sw = new StringWriter();

ser.Serialize(sw, list);//Ta liste en argument

string xml = sw.ToString();//Ton xml


De même, en sens inverse:

XmlSerializer ser = new XmlSerializer(typeof(List));

StringReader sr = new StringReader(xml);//Ton xml

List list = (List)xmlSer.Deserialize(sr);//cast pour ton type et tu récupère ta liste


Voila tout, et je te conseille fortement de faire de ces traitements des méthodes statique afin de ne pas répéter ce code partout où tu en auras besoin.


Bonne journée,

Billou_13
Bask En Force

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
0
cs_AmK Messages postés 368 Date d'inscription jeudi 13 mars 2003 Statut Membre Dernière intervention 27 janvier 2010 1
27 mars 2008 à 15:27
Bonne idée , je vais tester tout ça merci :)  
0
cs_ranas Messages postés 2 Date d'inscription vendredi 20 février 2009 Statut Membre Dernière intervention 31 mars 2011
30 mars 2011 à 20:24
bnjr,
je voudrais savoir s'il vous plait comment faire pr afficher un tableau dans un champs Text en utilisant visual studio C sharp ."quelle est la fonction qui me permet de l'afficher ??"
Merci d'avance
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
31 mars 2011 à 10:16
Bonjour,

Qu'entends tu par afficher un tableau dans un champs Text ? Il y a des milliers de façons de le faire.
Peux-tu nous dire concrêtement ce que contient ton tableau et ce que tu veux dans ton chamsp texte ?

De plus, peux-tu créer un nouveau sujet de conversation pour ta question car:
1) ta question n'a pas à voir avec le sujet de ce topic.
2) seul Amk et moi verront tes messages car ce topic est trop vieux pour que les gens viennent spontanément le voir.
Sinon, tu risques de ne pas avoir de réponse.

Merci,

Billou_13

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
0
cs_ranas Messages postés 2 Date d'inscription vendredi 20 février 2009 Statut Membre Dernière intervention 31 mars 2011
31 mars 2011 à 13:14
Merci bcp j'ai résolu le pb en utilisant juste la fonction Console.Out.WriteLine au lieu de return (tab);
0
Rejoignez-nous