N
na-oma
Gast
hi, versuche nen http reply von nem webserver zu "parsen" (damit ich die Content-Length rausbekomme) wird dann alles noch an nen Clienten weitergereicht:
Ich benutze also denselben InputStream, den ich mit server.getInputStream() bekomme "doppelt".
Wenn ich allerdings den Header mittels des InputStreamReaders gelesen habe, gibt BufferedInputStream.read() immer -1 zurück, obwohl mit Sicherheit noch was zu lesen ist!
Sobald ich das lesen des Headers auskommentiere und quasi alles als Binär-Daten mittels des BufferedInputStreams lese, liest dieser alles, bis zum Ende.
Kann man das so machen? Sehe nix schlimmes, dass ich den Stream 2x unterschiedlich benutze.
Würde mich über eine Lösung freuen. Villeicht gibts ja ein Patentrezept für solcherlei Angelegenheiten
Code:
//nen Reader, damit ich readLine() habe
BufferedReader fromServerReader = new BufferedReader(new InputStreamReader(server.getInputStream()));
//Header Teil
String line;
while ((line = fromServerReader.readLine()) != null) {
//lesen der Header-Zeilen, verarbeiten, an Clienten weitergeben, bei ner leeren Zeile (2x \r\n) break
}
//hier wat binäres...
BufferedInputStream fromServerStream = new BufferedInputStream(server.getInputStream());
int readLen;
byte[] buffer = new byte[512];
//hier kommt der Content Teil, der evtl. binär ist.
while ((readLen = fromServerStream.read(buffer)) != -1) {
//verarbeiten, an Clienten weitergeben
}
Ich benutze also denselben InputStream, den ich mit server.getInputStream() bekomme "doppelt".
Wenn ich allerdings den Header mittels des InputStreamReaders gelesen habe, gibt BufferedInputStream.read() immer -1 zurück, obwohl mit Sicherheit noch was zu lesen ist!
Sobald ich das lesen des Headers auskommentiere und quasi alles als Binär-Daten mittels des BufferedInputStreams lese, liest dieser alles, bis zum Ende.
Kann man das so machen? Sehe nix schlimmes, dass ich den Stream 2x unterschiedlich benutze.
Würde mich über eine Lösung freuen. Villeicht gibts ja ein Patentrezept für solcherlei Angelegenheiten