Sérialisation puis dé-sérialisation d'objet via String et flux de ByteArray
Bonjour à tous,
Je travaille actuellement sur un petit système multi-agents (en utilisant la plateforme JADE) et 2 agents doivent s'échanger un objet java (une HashMap classique).
Le seul type de données pouvant circuler entre les 2 est du texte, il faut donc sérialiser l'objet sous forme de texte, l'envoyer puis le reconstruire à partir de ce texte.
Après quelques recherches, je pense que je dois utiliser un ByteArrayOutputStream sur lequel je mappe l'ObjectOutputStream dans lequel je sérialise l'objet. J'utilise ensuite la méthode toString() de ByteArrayOutputStream afin d'obtenir une chaîne de caractère. Voici le code côté expéditeur:
Code:
1 2 3 4 5
|
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream out = new ObjectOutputStream(baos);
out.writeObject(conferenceTest); // l'HashMap à transmettre
reponse.setContent(baos.toString()); // contenu du message à envoyer |
Une fois le message envoyé, il faut reconstruire l'objet en utilisant logiquement ByteArrayInputStream et ObjectInputStream. Voici le code côté destinataire:
Code:
1 2 3 4
|
ByteArrayInputStream bais = new ByteArrayInputStream(content.getBytes()); //content étant le contenu du message reçu, donc en théorie l'objet sérialisé
ObjectInputStream in = new ObjectInputStream(bais); // ligne posant problème
conferenceTest = (HashMap<String,String>)in.readObject(); |
Lors de l'exécution de la 2ème ligne, je rencontre cette exception:
Code:
java.io.StreamCorruptedException: invalid stream header: EFBFBDEF
Est-ce que quelqu'un voit d'où peut venir le problème?
Merci beaucoup :D