Wie kann ich zwischen Anfrage und Antwort in einem HttpURLConnection unterscheiden?
-
16-09-2019 - |
Frage
Hallo Ich muss bewerten, ob ein Server die gzip-Komprimierung unterstützt.
Deshalb möchte ich gzip setzen, wie Accept-Encoding in meiner Anfrage und bewerten, ob die Antwort des Servers containts „Content-Encoding: gzip“.
Allerdings bin ich nicht ganz klar, wie dies zu tun mit HttpURLConnection. Vor allem, wenn meine Connection-Objekt über die Antwort abzufragen. Ich momentan tun:
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();
Lösung
Hier finden Sie aktuelle diesem OReilly Artikel . Es zeigt, wie die Anforderung zu generieren, und wie die Reaktion auf verhören und dann den entsprechenden Strom erzeugen (normal oder gzip) davon abhängig, was zurückgegeben wird.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow