Je suis en train de lire un flux de réponse Http deux fois par ce qui suit:Comment puis-je lire un flux de réponse Http deux fois en C#?
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
stream = response.GetResponseStream();
RssReader reader = new RssReader(stream);
do
{
element = reader.Read();
if (element is RssChannel)
{
feed.Channels.Add((RssChannel)element);
}
} while (element != null);
StreamReader sr = new StreamReader(stream);
feed._FeedRawData = sr.ReadToEnd();
Toutefois, lorsque le code StreamReader exécute il n'y a pas de données renvoyées parce que le flux a atteint la fin. J'ai essayé de réinitialiser le flux via stream.Position = 0 mais cela déclenche une exception (je pense que le flux ne peut pas être modifié manuellement).
Fondamentalement, je voudrais analyser le flux pour XML et avoir accès aux données brutes (au format de chaîne).
Des idées?
Une suggestion minuscule ici - Je vois souvent des appels à Seek où la propriété de position serait plus simple et plus facile à lire, par exemple ms.Position = 0; Juste une pensée pour le code futur. –
Un autre commentaire - ce qui précède ne finit pas la fermeture du flux entrant, jamais. Il pourrait être utile de créer une méthode "CopyAndClose" qui * ferme * le flux, juste pour garder la syntaxe d'appel simple. –
Wow, je me rapproche de mes héros ... Je suis en train de lire votre livre, Mr. Skeet :-) Ce que vous avez suggéré de fermer (et dire avec le nom de la méthode) est exactement ce que je pensais du code ci-dessus. – VVS