2010-07-28 23 views
0

Je suis en train d'essayer de récupérer une page Web, ajouter du texte en haut de la page, puis je vais envoyer la chaîne. Voici un exemple de cadre de ce que j'essaie de faire. Est-ce la bonne méthode ou est-ce que je fais un gros non-non quelque part?La bonne façon de récupérer des données à partir d'un flux HttpWebRespose, puis ajouter du texte

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.example.com"); 
var responce = (HttpWebResponse)request.GetResponse(); 
var responseStream = responce.GetResponseStream(); 
StreamReader reader = new StreamReader(responseStream); 
string responseString = reader.ReadToEnd(); 

StringBuilder sb = new StringBuilder(responseString); 

var index = sb.ToString().IndexOf("<body>", StringComparison.InvariantCultureIgnoreCase)+"<body>".Length; 
sb.Insert(index, "A lot of text will go here."); 
Console.WriteLine(sb.ToString()); 
+0

Je suppose que cela fonctionnera s'il est soudé ou au moins s'il n'y en a qu'un seul et aucune section littérale comprenant un et une méchanceté similaire –

+0

etc échouera. –

+0

@Rune FS, je me soucie uniquement de la première dans la page retournée. –

Répondre

1

est-il une raison particulière, vous devez utiliser HttpWebRequest/réponse? Vous pouvez également utiliser la classe WebClient comme celui-ci pour obtenir le même résultat:

WebClient web_client = new WebClient(); 
byte[] result = web_client.DownloadData("http://blah..."); 
string html = System.Text.Encoding.Default.GetString(result); 
html.IndexOf("<body>") ... 

Un peu moins de code comme ça aussi.

+0

Ou même web_client.DownloadString() –

+0

Oui, ça marcherait aussi bien! – codykrieger

+0

WebClient était exactement ce que je cherchais. Merci. –

0

À un certain moment, vous pouvez appeler responce.Close() et reader.Close()