T
Tarek1337
Gast
Hi,
ich habe einen Inputstream von einem HTTP request und möchte nun die Header als String lesen und die eigentlichen Daten in ein byte Array ablegen.
Mein Ansatz sieht wie folgt aus (der Inputstream kommt von einem Socket):
Das Ergebnis sieht allerdings immer so aus, dass ich nach den Headern nichts mehr bekomme d.h. stream.read(data) liefert gleich beim ersten aufruf -1.
Was mache ich falsch? Liegt es evtl. daran, dass ich zuerst über einen BufferedReader lese, und danach auf den normalen InputStream zugreife?
mfg
ich habe einen Inputstream von einem HTTP request und möchte nun die Header als String lesen und die eigentlichen Daten in ein byte Array ablegen.
Mein Ansatz sieht wie folgt aus (der Inputstream kommt von einem Socket):
Java:
InputStream stream = remoteSocket.getInputStream();
BufferedReader in = new BufferedReader(new InputStreamReader(stream));
List<String> requestLines = new ArrayList<String>();
ByteArrayOutputStream message = new ByteArrayOutputStream();
String line;
while ((line = in.readLine()) != null && !line.equals(""))
requestLines.add(line);
byte[] data = new byte[1024];
while (true) {
int len = stream.read(data);
if ( len > 0 )
message.write(data, 0, len);
else if ( len == 0 )
try {
Thread.sleep(20);
} catch (Exception e) {
}
else
break;
}
Das Ergebnis sieht allerdings immer so aus, dass ich nach den Headern nichts mehr bekomme d.h. stream.read(data) liefert gleich beim ersten aufruf -1.
Was mache ich falsch? Liegt es evtl. daran, dass ich zuerst über einen BufferedReader lese, und danach auf den normalen InputStream zugreife?
mfg