J'écris une servlet java sur AppEngine. Cette servlet génère des images png. Je voudrais "gzip" la réponse. Je le fais de cette façon:GZipOutputStream & appengine
resp.setHeader("Content-Encoding","gzip");
resp.setContentType("image/png");
// ... png generation ...
GZIPOutputStream gzos = new GZIPOutputStream(resp.getOutputStream());
gzos.write(myPNGdata);
gzos.close();
Mais: dans le serveur de développement, il est ok, les .png affiche fins et la réponse est bien au format gzip. Ensuite, je test sur le serveur de production (AppEngine) et tout ce que je reçois est un "cassé" image ...
ce qui pourrait être mal avec mon code? Est-ce lié à l'environnement dev/prod? Bien sûr, si je ne gzip la sortie, c'est OK dans les deux environnements.
Merci pour toute aide.
Edit: J'ai essayé cela aussi:
GZIPOutputStream gzos = new GZIPOutputStream(resp.getOutputStream());
gzos.write(ImagesServiceFactory.makeImage(readImage("somePicture.png")).getImageData());
gzos.flush();
gzos.finish();
gzos.close();
et il ne fonctionne pas non plus.
Édition 2: en fait, la réponse est gzip. Je suis allé chercher le servlet avec "curl theUrl> tmp.gz", puis j'ai gunzip "tmp.gz", et l'image est très bien. Mais aucun navigateur peut l'afficher :(correctement Quel est le problème avec mon gzip?
J'ai essayé avec 'gzos.flush();' et 'gzos.finish();' mais c'est le OK sur le serveur de développement, KO sur le moteur de l'application –
Avez-vous essayé resp.getOutputStream(). flush()? –