J'essaie d'obtenir des données compressées du serveur. Le gars qui a programmé le serveur m'a dit, qu'il utilise la bibliothèque ZLIB sur son iPhone, et le gzcompress sur le serveur. J'essayais de trouver un moyen approprié pour obtenir ces données, mais il finit avec info "java.io.IOException: format inconnu (nombre magique 9c78)" lors de la création de l'objet GZIPInputStream. Enfin, j'ai atteint le point, où j'avais des données en tant que chaîne. Il a été compressé, j'ai donc utilisé cette réponse pour décompresser: https://stackoverflow.com/a/6963668/419308. Mais ce code ne fonctionne pas. "in.read()" renvoie -1 au début.Android - téléchargement de la réponse compressée à partir de http
Quelqu'un a une idée de la raison pour laquelle il y a -1? Ou peut-être un meilleur moyen d'obtenir les données compressées?
EDIT: J'ai essayé d'ajouter un fichier au projet et de le lire dans ce fichier. in.read() n'a pas retourné -1
EDIT2: Selon jJ's answer J'ai essayé ce code:
HttpGet request = new HttpGet(urlTeam);
HttpResponse response = new DefaultHttpClient().execute(request);
HttpEntity entity = response.getEntity();
InputStream stream = AndroidHttpClient.getUngzippedContent(entity);
InputStreamReader reader = new InputStreamReader(stream);
BufferedReader buffer = new BufferedReader(reader);
StringBuilder sb = new StringBuilder();
sb.delete(0, sb.length());
String input;
while ((input = buffer.readLine()) != null)
{
sb.append(input);
}
Mais la réponse est toujours compressé (ou illisible)
-1 est retourné s'il n'y a rien à lire – pengibot
afin que le code est incorrect? Je suis sûr que la chaîne passée n'était pas vide – Seraphis
de l'API "le nombre réel d'octets lus, ou -1 si la fin du flux d'entrée compressé est atteint" – pengibot