HTTP Apache HttpComponents und GZIP

Würfelzucker

Neues Mitglied
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
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
Als Messagebody erwarte ich einen String mit Zahlen und Sonderzeichen. Stattdessen erscheint folgendes (lies sich nicht anständig kopieren, daher als Bild):
D6UOU.png


Es scheint eine Möglichkeit zu geben den Messagebody per
Code:
EntityUtils.toByteArray(entity)
und
Code:
java.util.zip
. Leider haben alle meine bisherigen Versuche zu einer
Code:
java.io.IOException: Stream closed
-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
Code:
Content-Encoding: gzip
des Servers verlassen?
2. Kann ich mit
Code:
EntityUtils.toByteArray(entity)
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
 
B

...ButAlive

Gast
Wie hast du es denn probiert? Ohne es auszuprobieren sollte es so lesbar sein:

Java:
HttpEntity entity = response.getEntity();
GZIPInputStream gzipStream = new GZIPInputStream(entity.getContent());

den gzipStream kannst du dann ganz normal lesen. Falls es ein String sein sollte geht das ungefähr so (dirty):

Java:
InputStreamReader reader = new InputStreamReader(zipStream);
BufferedReader buffered = new BufferedReader(reader);

StringBuilder builder = new StringBuilder();
String line = null;

while((line=buffered.readLine())!=null){
    builder.append(line);
}

String contentAsString = builder.toString();
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D HTTP Apache-HttpClient/UNAVAILABLE (java 1.4) Netzwerkprogrammierung 18
Nuiton FTP Apache Commons: FTPClient und Sicherheit Netzwerkprogrammierung 9
N FTP FTP Client invalid IPv6 address (Apache Commons Net API) Netzwerkprogrammierung 6
G apache httpClient Problem. Netzwerkprogrammierung 5
D Apache Mina Serial: Error Netzwerkprogrammierung 2
M Apache HTTPClient Server log ausgeben ?! Netzwerkprogrammierung 3
N HTTP Apache 4.2.1 HttpClient 302 nach Login und auf den weiteren Seiten. Netzwerkprogrammierung 5
R Apache HttpClient File Download? Netzwerkprogrammierung 3
0 Apache Commons File Object bekommen Netzwerkprogrammierung 4
F Apache commons net SFTPClient Netzwerkprogrammierung 5
D Apache CXF, JAX-WS Problem bei Arrays - einfacher Server Netzwerkprogrammierung 2
M Apache Solr doc & pdf Upload Netzwerkprogrammierung 8
M need org.apache.commons.httpclient.* Netzwerkprogrammierung 8
C apache commons net ftp bei upload unvollständig Netzwerkprogrammierung 3
R HTTP Apache HTTP Client: Request mit angehängter Datei Netzwerkprogrammierung 2
R Apache Mina - Hilfestellung Netzwerkprogrammierung 32
D Apache Mina und GWT Servlet Netzwerkprogrammierung 4
N SFTP apache keine Verbindungaufbau möglich Netzwerkprogrammierung 6
K Login via apache httpclient Netzwerkprogrammierung 4
dayaftereh Fragen zu Apache Mina? Netzwerkprogrammierung 5
T HTTP Apache Commons HttpClient Bibliothek Netzwerkprogrammierung 2
Kr0e Apache Mina -> await() Netzwerkprogrammierung 30
B Tomcat Apache Server Netzwerkprogrammierung 6
lordcarlos HTTP Apache HttpClient, post und login. Netzwerkprogrammierung 2
J org.apache.http.auth.NTCredentials Netzwerkprogrammierung 2
A org.apache.commons http client in Netbeans einbinden Netzwerkprogrammierung 3
T Apache HttpClient & Default Headers Netzwerkprogrammierung 9
T apache HTTPClient einloggen Netzwerkprogrammierung 2
Kr0e Apache Mina Problem Netzwerkprogrammierung 2
G apache von außen zugänglich machen Netzwerkprogrammierung 5
1 Upload problem! org.apache.commons.net.ftp Netzwerkprogrammierung 3
Q HTTPS mit Apache HttpClient Netzwerkprogrammierung 4
S Google Search Webservice mit Apache Axis realisieren? Netzwerkprogrammierung 2
I Apache http-client: Problem beim Proxyaufruf Netzwerkprogrammierung 2
S Applet und JWS auf Apache-Axis (SOAP) Netzwerkprogrammierung 8
C HTTPS mit Apache HTTPClient Netzwerkprogrammierung 1
M org.apache.commons.httpclient.HttpClient Netzwerkprogrammierung 3
J Antwort eines Soaprequests parsen mittels org.apache.soap Netzwerkprogrammierung 2
B Via Java Datei zu PHP-Script auf Apache hochladen Netzwerkprogrammierung 4
A http request per socket an apache server Netzwerkprogrammierung 5
D GZIP InputStream lesen ohne zu encoden Netzwerkprogrammierung 1
S Sockets und gzip Netzwerkprogrammierung 8
J gzip Stream weiterleiten Netzwerkprogrammierung 3

Ähnliche Java Themen

Neue Themen


Oben