Si tu dois lire des caract�res, utilise un Reader et non pas directement un
InputStream.
D'autant plus que tu lis de XML qui supporte de nombreux charset.
Quelque question n�1 : quel est le charset de ton flux XML ?
- iso latin 1 (par d�faut pour des caract�res venant d'un serveur HTTP)
- utf8 (par d�faut pour la plupart des sources XML).
Sinon, la m�thode read sur un buffer renvoie la longueur de lecture :
Returns: the total number of bytes read into the buffer, or -1 if there is
no more data because the end of the stream has been reached.
Donc le fait de faire new String(b) peut ajouter des caract�re invalides
(bytes d�finis au del� de la longueur de lecture.
Ma mani�re est la suivante
En input :
urlrequest l'url � lire
charser le charset du flux
InputSream is = urlrequest.openStream();
Reader r = new InputStreamReader(is,charset);
char buffer = new char[4096];
int l;
StringBuffer strBuf = new StringBuffer(4096);
do {
l = r.read(buffer);
if(l>0) {
strBuf.append(buffer,0,l);
}
} while(l>0);
Retourne
strBuf.toString();
Je n'ai pas test� ce bout de code. Il peut s'y glisser une erreur de frappe
:-)
--------------------------------------------------------------------
Erik Mazoyer, Chef de projet
HyperOffice
6, rue Jacques Daguerre - 92565 Rueil-Malmaison Cedex
T�l. 01 41 96 96 76
Fax 01 41 96 96 77
M�l [EMAIL PROTECTED]
-----Message d'origine-----
De: Olivier Lamy [mailto:[EMAIL PROTECTED]]
Date: lundi 18 f�vrier 2002 16:01
�: [EMAIL PROTECTED]
Objet: requete vers une cha�ne de caract�res
Bonjour,
Dans une servlet, je me connecte � une URL pour obtenir une cha�ne de
caract�res du r�sultat qu'elle me renvoie (en l'occurence du XML).
Or le code ci dessous qui pourtant me semblait pas mal :-)), ne fonctionne
pas vraiment :
URL urlrequest = new URL (URLTC);
InputStream IS = urlrequest.openStream();
byte b[] = new byte[4096];
int j;
while((IS.read(b, 0, b.length)) != -1) {s2 = s2 + new String(b);}
en bout d'InputStream, la m�thode read () est cens� ramen�e -1 ???
Merci d'avance ..
Olivier