2011-12-12 13 views
6

Estoy tratando de descomprimir las respuestas del servidor GAE, pero recibo nulo en Content-Encoding.AppEngine compresión gzip

Tengo el siguiente código:

connection = (HttpURLConnection)url.openConnection(); 
connection.setRequestMethod("POST"); 
connection.setRequestProperty("Content-Type", 
      "application/json; charset=utf-8"); //"application/json; charset=utf-8" 
connection.setRequestProperty("Accept-Encoding", "gzip"); 
connection.setRequestProperty("User-Agent", "gzip"); 
connection.setUseCaches (false); 
connection.setDoInput(true); 
connection.setDoOutput(true); 

//write 
//read 

System.out.println("Content-Encoding " + connection.getContentEncoding()); 

He leído que en los servidores GAE no comprimir automáticamente. Entonces, ¿cuál puede ser el problema?

+0

GAE no toma nota de si se lo pide o no. ¿Qué tan grande es el archivo en este caso? Por experiencia, cualquier cosa de más de 1 MB nunca se comprime. – David

Respuesta

9

Los servidores frontales de App Engine se basan en una serie de factores, incluidos los encabezados Accept-Encoding y User-Agent, para determinar si deben comprimir las respuestas. Lo hacen porque hay un número de agentes de usuario que afirman aceptar respuestas comprimidas, pero en realidad no pueden entenderlas.

Intente configurar su agente de usuario para algo sensato (y no 'gzip', que no es un agente de usuario real), y vea si eso hace alguna diferencia.

+6

https://developers.google.com/appengine/kb/general#compression declara "Para forzar la publicación del contenido comprimido, los clientes pueden suministrar 'gzip' como el valor de los encabezados de solicitud Aceptar-Codificación y Agente de usuario. ". Algunas personas informan que funciona, otras no. Básicamente, nadie parece saber la respuesta real. – David

+0

Cliente modificado para enviar 'Aceptar-Codificación: gzip', pero App Engine aún respondió sin comprimir. Luego adjunto gzip a UA, 'User-Agent: Our Real UA String; gzip' y eso (junto con 'Accept-Encoding: gzip') finalmente obligaron a App Engine a responder comprimido. –

+0

¿Podemos hacer esto sin enviar una solicitud? como establecer estos valores dentro del código? –

Cuestiones relacionadas