Länge eines Streams

Status
Nicht offen für weitere Antworten.

Johannes L.

Aktives Mitglied
Hi,

wie bekomme ich die Länge eines GZIPOutputStreams heraus, die ich für den HTTP Content-Length Header brauche?

Code:
logger.debug("Encode as GZip data!");

byte[] BinaryBody = new byte[8192];

GZIPOutputStream gzipOut = new GZIPOutputStream(client
		.getOutputStream());

int length;

while ((length = in.read(BinaryBody)) != -1)
{
	gzipOut.write(BinaryBody, 0, length);
	gzipOut.flush();
}

gzipOut.close();

Viele Grüsse,
Johannes
 

semi

Top Contributor
Gar nicht. Ein Stream hat keine Länge, ist nur eine Datenschleuse.

Wenn die Datemenge nicht zu gross ist, kannst du zuerst mal in ein ByteArrayOutputStream schreiben,
die Länge ausgeben und anschliessend das Byte-Array.
 

Johannes L.

Aktives Mitglied
semi hat gesagt.:
Gar nicht. Ein Stream hat keine Länge, ist nur eine Datenschleuse.

Wenn die Datemenge nicht zu gross ist, kannst du zuerst mal in ein ByteArrayOutputStream schreiben,
die Länge ausgeben und anschliessend das Byte-Array.

Müsste es dann nicht quasi

Code:
InputStream in = method.getResponseBodyAsStream();
		
byte[] BinaryBody = new byte[8192];
		
ByteArrayOutputStream baOut = new ByteArrayOutputStream();
		
GZIPOutputStream gzipOut = new GZIPOutputStream(baOut);
		
int length;

while ((length = in.read(BinaryBody)) != -1)
{
	gzipOut.write(BinaryBody, 0, length);
	gzipOut.flush();
}

gzipOut.close();
		
byte[] compressedData = baOut.toByteArray();

to_client.write("Content-Length: "+compressedData.length+"\r\n\r\n");
to_client.write(compressedData.toString());
to_client.flush();

sein? Dummerweise sagt mir das JUnit Testcase nun, dass es nicht mehr im gzip-Format wäre...

Code:
    // start request
    try {
      int statusCode = client.executeMethod(method);

      // do not accept failure
      assertEquals(HttpStatus.SC_OK, statusCode);

      // read the (compressed!) response body and gunzip it
      GZIPInputStream gin = new GZIPInputStream(method
          .getResponseBodyAsStream());
      byte[] uncompressedBinaryBody = new byte[8192];
      StringBuffer body = new StringBuffer();
      int length;
      while ((length = gin.read(uncompressedBinaryBody)) != -1) {
        body.append(new String(uncompressedBinaryBody, 0, length));
      }

      // do not accept wrong body
      assertEquals(GET_BODY, body.toString());

    } catch (Exception e) {
      fail(e.getLocalizedMessage());
    } finally {
      method.releaseConnection();
    }
  }
 
G

Guest

Gast
Warum Ende des Response-Headers hier? Schreibst du den ganzen Rest irgendwo davor?
Code:
to_client.write("Content-Length: "+compressedData.length+"\r\n\r\n");
toString() ist definitiv falsch. Schreibe das Array rein.
Code:
to_client.write(compressedData.toString());
 

Johannes L.

Aktives Mitglied
ups stimmt, muss ich grade mal testen. Ja ich schreibe die Header in einer Methode, erzeuge die gezippten Daten in einer anderen Methode ... was auch ein Problem war, da ich die ganzen Daten dann immer weitergeben musste, also das Byte Array beispielsweise...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Das UDP DatagramPaket und seine Länge Netzwerkprogrammierung 6
M SocketError bei Aufruf eines SOAP-Servers Netzwerkprogrammierung 8
G seite nach posten eines html-forms laden Netzwerkprogrammierung 0
J Protokolle innerhalb eines Heimnetzwerks Netzwerkprogrammierung 6
V Kann man mit Hilfe eines Java-Programms den Zugriff auf bestimmte Internetseiten verhinden? Netzwerkprogrammierung 3
N Name eines Attributes aus einem festen String und einer Variablen generieren Netzwerkprogrammierung 5
X Response eines RESTful-Service mit JSON Netzwerkprogrammierung 8
F Neuer Json aus teilen eines vorhandenen Json Netzwerkprogrammierung 0
N Client Identifikation eines Servers Netzwerkprogrammierung 1
R Problem beim Programmieren eines Chatprogramms Netzwerkprogrammierung 5
K Multiplayer eines Spiels Netzwerkprogrammierung 21
K Ansprechen eines Remote Druckers Netzwerkprogrammierung 2
L Erstellen eines Online Multiplayer Apps Netzwerkprogrammierung 10
eLogic Download eines Links Netzwerkprogrammierung 2
U Socket Abhören eines Sockets/Ports in extra Thread Netzwerkprogrammierung 8
2 Schliessen eines Serversockets Netzwerkprogrammierung 2
Hindi93 Abbruch eines Programmes abfangen Netzwerkprogrammierung 8
1 SSH-Kommunikation - Ende eines Streams nicht erkenntlich Netzwerkprogrammierung 2
C Alle Computer eines Netzwerkes finden Netzwerkprogrammierung 32
N Senden eines Arrays Netzwerkprogrammierung 6
U Name eines Netzlaufwerks ermitteln Netzwerkprogrammierung 5
L Body eines http Request auslesen Netzwerkprogrammierung 2
K Ende eines HTTP Response/Request Netzwerkprogrammierung 6
aze Tcp Verkehr eines Applets simulieren Netzwerkprogrammierung 10
J Socket Erreichbarkeit eines Java Servers (Socket-Lösung) über das Internet Netzwerkprogrammierung 3
M Socket Leistungsfähigkeit eines xSocketservers, wieviele Verbindungen max? Netzwerkprogrammierung 4
clupus Exception beim Schließen eines Sockets Netzwerkprogrammierung 6
cowabunga1984 Transferierte Datenmenge eines SOAP Clients (JAX-WS) anzeigen Netzwerkprogrammierung 2
K TrafficClass eines UDP Pakets kommt beim Empfänger nicht an Netzwerkprogrammierung 5
musiKk Problem bei bidirektionaler Nutzung eines Socket Netzwerkprogrammierung 2
J Machbarkeit eines Bluetooth-Servers? Netzwerkprogrammierung 2
S Realisierung eines Netzwerkcodes für ein Strategiespiel Netzwerkprogrammierung 7
K "Ende eines Sockets" Netzwerkprogrammierung 9
A Broadcast - senden eines Packetes an alle rechner im netz Netzwerkprogrammierung 15
P problem beim schließen eines Streams Netzwerkprogrammierung 6
K Mit Java-MailAPI dir Verfügbarkeit eines SMTP-Servers prüfen Netzwerkprogrammierung 4
J while-Schleife / Abbruchbed. beim Einlesen eines Streams Netzwerkprogrammierung 4
U Ende eines Inputstreams ermitteln Netzwerkprogrammierung 3
T Timeout eines KSOAP-Calls Netzwerkprogrammierung 5
G Info eines Webseites kopieren Netzwerkprogrammierung 16
J Antwort eines Soaprequests parsen mittels org.apache.soap Netzwerkprogrammierung 2
E Möglichkeit zum Timeout eines Process Netzwerkprogrammierung 7
T Erstellung eines Proxy Netzwerkprogrammierung 11
T Pfad eines Servlets rausfinden Netzwerkprogrammierung 2
O Einbinden eines java-servers Netzwerkprogrammierung 9
C Übergabe eines Datensatzes (Übergabestruktur) Netzwerkprogrammierung 12
G Verzeichnis eines Rechners übers Netzwerk auslesen Netzwerkprogrammierung 5
B Problem mit der Ausgabe eines Strings an SocketOut Netzwerkprogrammierung 4
M Verständnisfrage zu den Streams Netzwerkprogrammierung 7
J Threads & Streams Netzwerkprogrammierung 9
N Paket-Analysieren Byte-Streams Netzwerkprogrammierung 12
C Socket Cipher Streams Netzwerkprogrammierung 6
E Verfügbarkeit von Daten in Streams Netzwerkprogrammierung 4
V HTTP Streams setzen Netzwerkprogrammierung 10
N Socket Fehler bei Streams Netzwerkprogrammierung 2
D Socket Streams schliessen .. Exception gewollt? Netzwerkprogrammierung 4
B Server mit meheren Streams/Aufgaben? Netzwerkprogrammierung 9
H RMI RPC "not suitable for streams and.." Netzwerkprogrammierung 2
T HTTP Encoding von Http-Streams Netzwerkprogrammierung 2
L mehrere Streams über einen Socket? Netzwerkprogrammierung 8
V Mehrere Streams durch einen Stream senden Netzwerkprogrammierung 14
M Streams verwenden Netzwerkprogrammierung 3
A Streams per RMI übergeben Netzwerkprogrammierung 6
K Selbe Streams mehrfach nutzen (zusätl. Thread) Netzwerkprogrammierung 6
M Streams Bündeln Netzwerkprogrammierung 10
P Probleme mit Input- / Output-Streams Netzwerkprogrammierung 2
M Ende des Streams ohne Schließen/Checksumme mitsenden Netzwerkprogrammierung 2
M Probleme beim Abfangen von Streams Netzwerkprogrammierung 5
8 Socket Streams nur mit Byte? Netzwerkprogrammierung 2
E frage zu streams Netzwerkprogrammierung 2
F ResultSet in Streams Netzwerkprogrammierung 8
C IRC CHAT auslesen -> Sockets/input und output Streams Netzwerkprogrammierung 9

Ähnliche Java Themen

Neue Themen


Oben