¿Cómo puedo diferenciar entre la petición y la respuesta en un HttpURLConnection?
-
16-09-2019 - |
Pregunta
Hola necesito para evaluar si un servidor compatible con la compresión gzip.
Por lo tanto quiero fijar gzip como Accept-Encoding en mi solicitud y evaluar si la respuesta del servidor containts "Content-Encoding: gzip".
Sin embargo no estoy muy claro sobre cómo hacer esto con HttpURLConnection. Especialmente cuando para consultar mi conexión de objetos sobre la respuesta. Actualmente hago:
HttpURLConnection con = (HttpURLConnection) feedurl.openConnection();
con.setRequestProperty("Accept-Encoding", "gzip");
System.out.println("Current Accept-Encoding: "+con.getRequestProperty("Accept-Encoding"));
//check the response for the content-size
float feedsize = con.getContentLength()/1024f;
//the server uses transfer-encoding=chunked and does not specify
//a content length
if(con.getContentLength()==-1)
{
//count the content size manually
CountingInputStream counter = new CountingInputStream(con.getInputStream());
while(counter.read()!=-1)
{}
feedsize=counter.getCount()/1024f;
}
con.disconnect();
Solución
Tener un vistazo a este artículo OReilly. Ilustra cómo generar la petición, y la forma de interrogar a la respuesta y a continuación, crear la corriente apropiada (normal o gzip) depende de lo que está siendo devuelto.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow