Hallo Community,
ich habe ein Problem beim Umgang mit einem GZIP und den Apache HttpComponents. Ich habe (vermutlich?) GZIP-Komprimierten Messagebody. Ich bin nicht besonders erfahren mit Java, daher fällt mir die Fehleranalyse schwer.
Hier ein Ausschnit meines Codes
Die Antwort vom Server:
Als Messagebody erwarte ich einen String mit Zahlen und Sonderzeichen. Stattdessen erscheint folgendes (lies sich nicht anständig kopieren, daher als Bild):
Es scheint eine Möglichkeit zu geben den Messagebody per
und
. Leider haben alle meine bisherigen Versuche zu einer
-Exception geführt. Deshalb folgende Fragen:
1. Woher weiß ich, ob der MessageBody den ich als gzip-komprimiert vermute, auch wirklich gzip-komprimiert ist? Kann ich mich da auf das
des Servers verlassen?
2. Kann ich mit
weiterarbeiten oder ist damit der Inhalt bereits verfälscht?
3. Kann mir jemand bitte ein Beispiel zeigen, wie ich aus dem ByteArray einen dekomprimierten String erhalte? Alle meine Versuche hatten leider keinen Erfolg
Ich bitte um Hilfe. Vielen Dank im Voraus
Schönen Gruß
Würfelzucker
ich habe ein Problem beim Umgang mit einem GZIP und den Apache HttpComponents. Ich habe (vermutlich?) GZIP-Komprimierten Messagebody. Ich bin nicht besonders erfahren mit Java, daher fällt mir die Fehleranalyse schwer.
Hier ein Ausschnit meines Codes
Java:
HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet();
// habe den gesamten Header übernommen, den Firefox auch sendet..
request.setHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
request.setHeader("Accept-Encoding", "gzip, deflate")
// usw...
try {
request.setURI(new URI(meineSeiteAlsString));
HttpResponse response = client.execute(request);
HttpEntity entity = response.getEntity();
System.out.println(EntityUtils.getContentMimeType(entity)); // gibt text/html
System.out.println(EntityUtils.getContentCharSet(entity)); // gibt null
// System.out.println(EntityUtils.toByteArray(entity) + "\n\n");
System.out.println(EntityUtils.toString(entity)); // Ausgabe in einem Bild folgt
} catch (Exception e) {
System.out.println("ERROR: " + e.toString());
} finally {
client.getConnectionManager().shutdown();
}
Die Antwort vom Server:
Code:
HTTP/1.1 200 OK
Date: Tue, 28 Feb 2012 22:18:55 GMT
Server: Apache/2.2.14 (Ubuntu)
X-Powered-By: PHP/5.3.2-1ubuntu4.14
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 154
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: text/html

Es scheint eine Möglichkeit zu geben den Messagebody per
Code:
EntityUtils.toByteArray(entity)
Code:
java.util.zip
Code:
java.io.IOException: Stream closed
1. Woher weiß ich, ob der MessageBody den ich als gzip-komprimiert vermute, auch wirklich gzip-komprimiert ist? Kann ich mich da auf das
Code:
Content-Encoding: gzip
2. Kann ich mit
Code:
EntityUtils.toByteArray(entity)
3. Kann mir jemand bitte ein Beispiel zeigen, wie ich aus dem ByteArray einen dekomprimierten String erhalte? Alle meine Versuche hatten leider keinen Erfolg
Ich bitte um Hilfe. Vielen Dank im Voraus
Schönen Gruß
Würfelzucker