Tableau d'objets vide dans la webmethod

cs_stetoise Messages postés 2 Date d'inscription mercredi 12 août 2009 Statut Membre Dernière intervention 9 février 2010 - 8 févr. 2010 à 16:48
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 - 9 févr. 2010 à 12:07
Bonjour,

j'ecris un service web client/serveur en Java.
J'ai pu le faire mais lors de mon test,j'ai une belle surprise.
coté client,Ma méthode d'appel du service web prend plusieurs paramètres dont un tableau d'objets. Le tableau d'objets est en fait un arraylist défini comme suit

List<Measure> measures = new arrayList<Measure>; où Measure est une classe qui prend en paramètres deux String.

Lorsque je cree mon tableau d'objets dans le main.Il contient bien les objets Measure mais lorsque j'appelle la méthode du service web, je me rends compte que le tableau d'objets est vide coté client.
quelqu'un aurait il déja rencontré ce genre de problème et si oui, merci de m'apporter votre aide.


Cordialement,

3 réponses

krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 50
8 févr. 2010 à 17:54
Est-ce en C# (forum où tu as posté) ou en Java (ce que tu indiques dans ton message) ?

C'est quoi pour toi les paramètres d'une classe ?

Le seul code que tu donnes n'est, je crois, pas valide, car ArrayList<T> n'implémente pas List<T>.

Serait-il cependant possible d'avoir le code de ta webmethod ?
Ta classe Measure est-elle sérialisable ?

Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
0
cs_stetoise Messages postés 2 Date d'inscription mercredi 12 août 2009 Statut Membre Dernière intervention 9 février 2010
9 févr. 2010 à 11:31
bonjour,
dsolée mais j'avais pas prêté attention au fait que je suis sur le forum c#.
néanmoins, je vous donne quand meme ce que j'ai fait.
An fait, mes deux classes sont sérialisables.
Ces classes sont coté serveur sont ensuite appelées dans mon web service.
Ma classe measure est la suivante

class Measure implements Serializable{

protected String tag;
protected String value;
protected String description;

Measure() {
tag="";
value="";
description="";
}

Measure(String tag1,String val,String desc)
{
tag=tag1;
value=val;
description = desc;
}


et ma classe ArrayofMeasure est la suivante.

public class ArrayofMeasure implements Serializable{

private List<Measure> montab;

public ArrayofMeasure() {
// Measure meas = new Measure("pi1", "23.2", "");

// public ArrayList<Object> var = new ArrayList<Object>(); // Il ne faut pas redéclarer ta liste vu qu'elle est déjà membre de ta classe
montab = new ArrayList<Measure>();
}

public List<Measure> getMeasures() {
if (montab == null) {
montab = new ArrayList<Measure>();
}
return montab;
}

D'après la documentation de Java, je peux utiliser la relation entre List et Arraylist tel que ci-dessus.
De plus, j'ai lu quelque part sur google que mes données devraient être sérialisés avant d'être envoyé du client vers le serveur qui le désérialisera par la suite.
Suis je obligé de le faire parce que je préfèrerais une autre solution.

Merci si vous pouviez m'apporter une solution meme s'il est en C#.
0
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 50
9 févr. 2010 à 12:07
Un admin peut-il déplacer ce post sur le forum Java please ?

En ce qui concerne la relation List / ArrayList, je parlais en C#, pas en Java ;)

Quant à la sérialisation, elle est obligatoire pour un webservice. Il utilise un protocole SOAP (basé sur du XML) pour transférer les données du client au service et vice-versa. Un webservice doit être compatible avec tous les langages. Or la structure des données en mémoire est potentiellement très différente entre 2 langages. Il doit donc faire de la sérialisation pour que tes données ne dépendent pas de la mémoire.

Cependant, je risque de ne pas plus pouvoir t'aider, désolé.


Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
0