S'il vous plaît voir ma question connexe here (mais dans C#
) et les réponses à ce sujet afin de comprendre ce que je veux dire. Ensuite, vous devez rechercher l'exemple pour decompress gzip android
et regarder les ressources existantes pour accomplir ceci.
Veuillez garder à l'esprit que l'API n'envoie pas toujours la réponse au format gzip ou non. Alors s'il vous plaît faites une vérification si la réponse est vraiment dans gzip.
Pour la décompression simple, vous pouvez utiliser la méthode suivante:
public static String decompress(byte[] compressed) throws IOException {
final int BUFFER_SIZE = 32;
ByteArrayInputStream bis = new ByteArrayInputStream(compressed);
GZIPInputStream gis = new GZIPInputStream(bis, BUFFER_SIZE);
StringBuilder s = new StringBuilder();
byte[] data = new byte[BUFFER_SIZE];
int bytesRead;
while ((bytesRead = gis.read(data)) != -1) {
s.append(new String(data, 0, bytesRead));
}
gis.close();
bis.close();
return s.toString();
}
(ce code a été prise de Vyshnavi's answer)
avec un Inspectez outil comme '' Fiddler' ou Wireshark' afin d'inspecter l'en-tête http de codage de contenu. La première chose qui me vient à l'esprit est que la réponse que vous obtenez pourrait être compressée en 'gzip',' bzip' ou 'deflate'. Dans ce cas, vous devez le décompresser comme vous devez le faire avec un fichier 'zip'. Si la réponse est compressée, vous devez d'abord la décompresser dans votre application. – cramopy
Pourquoi cela fonctionnait avant? et aussi comment ça marche sur les navigateurs? Mes applications sont sur Playstore et ils fonctionnaient bien. Soudain, les applications cessent de fonctionner et dans les journaux au-dessus de la chose stupide montre 200 code de réponse. –
s'il vous plaît lire à nouveau mon commentaire ... S'il vous plaît fournir la valeur de l'en-tête 'Content-Encoding' de la réponse afin de vous aider. – cramopy