lamathep
Nouveau membre
Bonjour à tous,
Tout d'abord, merci de vous intéresser à mon problème.
Pour info, je suis débutant en Java.
Pour une application android devant transfèrer du texte sur un serveur, il conviendrait de "zipper" les données pour réduire le volume des données transferées. (Usage en 3G, Conso réduite, ou en EDGE, debit réduit, moins de données transitent, plus c'est rapide)
J'ai écumé les forums, docs en tout genre, j'ai fini par trouver quelques exemples de code qui sembleraient ne pas trop mal correspondre à mes besoins.
Je suis parti de celui-ci :
Lorsque j'execute ce code sans mes ajouts, tout va bien, ca compresse, ca décompresse, et l'intégrité des données est bonne.
Losque j'ajoute mon traitement pour convertir les données compressées en chaine (pour qu'elles transitent sur une socket), j'ai l'erreur suivante : "DataFormatException : data error"
Voici mon code, j'espère que vous pourrez m'aider à comprendre ce que j'ai mal fait, ou une solution plus adaptée à mes besoins.
Merci d'avance,
Hugues.
Tout d'abord, merci de vous intéresser à mon problème.
Pour info, je suis débutant en Java.
Pour une application android devant transfèrer du texte sur un serveur, il conviendrait de "zipper" les données pour réduire le volume des données transferées. (Usage en 3G, Conso réduite, ou en EDGE, debit réduit, moins de données transitent, plus c'est rapide)
J'ai écumé les forums, docs en tout genre, j'ai fini par trouver quelques exemples de code qui sembleraient ne pas trop mal correspondre à mes besoins.
Je suis parti de celui-ci :
Vous devez être connecté pour voir les liens.
Lorsque j'execute ce code sans mes ajouts, tout va bien, ca compresse, ca décompresse, et l'intégrité des données est bonne.
Losque j'ajoute mon traitement pour convertir les données compressées en chaine (pour qu'elles transitent sur une socket), j'ai l'erreur suivante : "DataFormatException : data error"
Voici mon code, j'espère que vous pourrez m'aider à comprendre ce que j'ai mal fait, ou une solution plus adaptée à mes besoins.
Merci d'avance,
Hugues.
Java:
public static String PG_DEFLATE_INFLATE(String myString)
{
import java.io.*;
import java.util.*;
import java.util.zip.*;
try {
// Encode a String into bytes
byte[] input = myString.getBytes("UTF-8");
// Compress the bytes
byte[] output = new byte[100];
Deflater compresser = new Deflater();
compresser.setInput(input);
compresser.finish();
int compressedDataLength = compresser.deflate(output);
//////////////////////////////////////////////////////////////////////////////////////////////////////
// "Simulation" d'un passage sur une socket en transformant les données compressées en chaine ////////
String compressedString = new String(output,0,compressedDataLength);
byte[] out = compressedString.getBytes();
// Lors de la décompression, renvoie systematiquement l'exception "DataFormatException : data error"//
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Decompress the bytes
Inflater decompresser = new Inflater();
decompresser.setInput(out, 0, compressedDataLength);
byte[] result = new byte[100];
int resultLength = decompresser.inflate(result);
decompresser.end();
// Decode the bytes into a String
String outputString = new String(result, 0, resultLength, "UTF-8");
return outputString;
} catch(java.io.UnsupportedEncodingException ex) {
return "ERROR[|]"+ex;
} catch (java.util.zip.DataFormatException ex) {
return "ERROR[|]"+ex;
}
}