Perecastorr
Messages postés39Date d'inscriptionlundi 10 novembre 2008StatutMembreDernière intervention 7 septembre 2010
-
25 févr. 2010 à 15:15
Perecastorr
Messages postés39Date d'inscriptionlundi 10 novembre 2008StatutMembreDernière intervention 7 septembre 2010
-
26 févr. 2010 à 11:20
Bonjour,
J'ai une jolie classe qui récupère une réponse au format XML d'une httpWebRequest. Sur cette classe j'ai voulu ajouter une gestion de progression dans le but de relier le tout a une progressBar.
Mais je suis confronté a un problème que je ne comprend pas du tout : je ne peux plus réceptionner l'intégralité de mon XML si j'ajoute ma gestion de progression... Je pense qu'il y a quelque chose que j'ai fais de travers, je vous laisse regarder la source :
Ceci est le code de base, qui fonctionne bien :
if (objHttpWebResponse.StatusCode == HttpStatusCode.OK)
{
//Get response stream
objResponseStream = objHttpWebResponse.GetResponseStream();
//Load response stream into XMLReader
objXMLReader = new XmlTextReader(objResponseStream);
//Declare XMLDocument
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(objXMLReader);
//Set XMLResponse object returned from XMLReader
XMLResponse = xmldoc;
//Close XMLReader
objXMLReader.Close();
}
Et maintenant le même code mais avec l'ajout de la récupération du nombre d'octet transféré :
//Get response stream
objResponseStream = objHttpWebResponse.GetResponseStream();
//Load response stream into XMLReader
objXMLReader = new XmlTextReader(objResponseStream);
Int64 bytesRead;
Int64 total = 0;
byte[] byteBuffer = new byte[size];
do
{
//Read bytes in stream
bytesRead = objResponseStream.Read(byteBuffer, 0, (int)size);
//add bytesRead to total
total += bytesRead;
//Display for future progressBar
Console.WriteLine(total/(size/100));
}while(bytesRead > 0);
//Declare XMLDocument
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(objXMLReader);
//Set XMLResponse object returned from XMLReader
XMLResponse = xmldoc;
//Close XMLReader
objXMLReader.Close();
J'ai bien l'affichage de la progression en pourcentage en temps réel mais le XmlDocument n'est pas valide, j'ai une exception :
"Unexpected end of file has occurred. The following elements are not closed: "[...]" Line 2, position 3830."