Cette question est une extension de la question ici . J'utilise le code ici reproduit ci-dessous pour compresser GZIP un JSONObject
.
String foo = "value";
ByteArrayOutputStream baos = new ByteArrayOutputStream();
GZIPOutputStream gzos = null;
try {
gzos = new GZIPOutputStream(baos);
gzos.write(foo.getBytes("UTF-8"));
} finally {
if (gzos != null) try { gzos.close(); } catch (IOException ignore) {};
}
byte[] fooGzippedBytes = baos.toByteArray();
J'utilise un DefaultHttpClient
pour envoyer ce JSONObject compressé au serveur (le code est sous mon contrôle).
Ma question
Quel en-tête dois-je utiliser dans mon request
? J'utilise request.setHeader("Content-type", "application/json");
pour envoyer JSON au serveur?
Pour informer le serveur que vous envoyez des données encodées en gzip, envoyez l'en-tête Content-Encoding , pas Accept-Encoding .
This réponse vous montre que vous devez définir un en-tête indiquant que vous envoyez des données compressées:
HttpUriRequest request = new HttpGet(url);
request.addHeader("Content-Encoding", "gzip");
// ...
httpClient.execute(request);
La réponse montre également comment gérer les données compressées entrantes.