firestore - ¿Qué encabezado se debe usar para enviar GZIP comprimido JSON desde el cliente de Android al servidor?
firebase database backup (2)
Para informar al servidor que está enviando datos codificados con gzip, envíe el encabezado Content-Encoding , no Accept-Encoding .
Esta pregunta es una extensión de la pregunta here . Estoy usando el código here reproducido a continuación para comprimir un JSONObject
GZIP.
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();
Estoy utilizando un DefaultHttpClient
para enviar este JSONObject comprimido al servidor (el código está bajo mi control).
Mi pregunta
¿Qué encabezado debo usar en mi request
? Estoy usando request.setHeader("Content-type", "application/json");
para enviar JSON al servidor?
This respuesta le muestra que necesita establecer un encabezado que indique que está enviando datos comprimidos:
HttpUriRequest request = new HttpGet(url);
request.addHeader("Content-Encoding", "gzip");
// ...
httpClient.execute(request);
La respuesta también muestra cómo lidiar con los datos comprimidos entrantes.