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

Répondre à