Re: inputstream -> string
- From: Sven Köhler <remove-for-no-spam-skoehler@xxxxxx>
- Date: Tue, 13 Nov 2007 14:56:17 +0100
Irgendwo muss die Umwandlung von Bytes in Characters passieren,
aber ich wuerde das beim Lesen machen und dann die "symmetrische"
Form machen, den aus dem Reader gelesenen char-Buffer
direkt in den Writer zu schreiben:
Würd ich auch so machen!
private String readStream(InputStream input) throws IOException {
char[] buffer = new char[8192];
Reader in = new InputStreamReader(input);
StringWriter sw = new StringWriter();
int Read;
while ((charsRead = in.read(buffer)) != -1) {
sw.write(buffer, 0, charsRead);
}
return sw.toString();
}
Aber das iss murks. Kein Encoding anzugeben, iss doch hier die Obersünde
Nummer 1. Wer will schon, dass seine App nur mit bestimmten
default-Encoding sauber läuft.
oder noch besser:
private String readStream(InputStream input, String encoding)
throws IOException {
char[] buffer = new char[8192];
Reader in = new InputStreamReader( input, encoding );
StringWriter sw = new StringWriter();
int bytesRead;
while ((charsRead = in.read(buffer)) != -1) {
sw.write(buffer, 0, charsRead);
}
return sw.toString();
}
Daher ist auf jeden Fall diese Variante zu bevorzugen. Vielleicht sollte
man sogar versuchen, dass Charset aus den Headers des Requests zu
extrahieren. Manch ein Client könnte da eins mitschicken.
Wobei mir grade auffällt: ist es nicht sowieso so, dass POST-Daten nur
als ASCII reinflattern dürfen? Später müssen die %XX Sequenzen dekodiert
werden. Und erst dann nimmt man eine Umwandlung mit dem Charset vor. Und
das würde bedeuten, dass der ganze Kram, der ja nach der obrigen Routine
in einem String steckt, wieder in byte[] zu wandeln, um dann wieder
zurück nach String zu wandeln.
Daher würde ich definitiv vorschlagen, die Daten als byte[] zu parsen.
Aber vielleicht sind's ja auch Daten in eigenem Format ...
.
- Follow-Ups:
- Re: inputstream -> string
- From: Tor-Einar Jarnbjo
- Re: inputstream -> string
- From: Jan Torben Heuer
- Re: inputstream -> string
- References:
- inputstream -> string
- From: Jan Torben Heuer
- Re: inputstream -> string
- From: Hubert Partl
- inputstream -> string
- Prev by Date: Re: SplashScreen mit JDK 6
- Next by Date: Re: inputstream -> string
- Previous by thread: Re: inputstream -> string
- Next by thread: Re: inputstream -> string
- Index(es):
Relevant Pages
|
Loading