Comment faire la différence entre la demande et la réponse dans un HttpURLConnection?
-
16-09-2019 - |
Question
Salut je dois évaluer si un serveur prend en charge la compression gzip.
Par conséquent, je veux mettre gzip comme Accept-Encoding dans ma demande et d'évaluer si la réponse du serveur containts « Content-Encoding: gzip ».
Cependant, je ne suis pas tout à fait clair sur la façon de le faire avec HttpURLConnection. Surtout quand pour interroger mon objet de connexion sur la réponse. Je fais actuellement:
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();
La solution
Jetez un oeil à cet article OReilly. Il illustre comment générer la demande, et comment interroger la réponse et ensuite créer la fonction de ce qui est de retour approprié flux (normal ou gzip).
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow