web-dev-qa-db-fra.com

Quel en-tête doit être utilisé pour envoyer du JSON compressé GZIP de Android Client to Server?

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?

25
Gaurav Agarwal

Pour informer le serveur que vous envoyez des données encodées en gzip, envoyez l'en-tête Content-Encoding , pas Accept-Encoding .

43
Michael Hampton

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.

19
Audrius