如何将网站内容下载到字符串?

时间:2012-08-09 20:01:14

标签: c#

我试过这个,我想要将网站的源内容下载到一个字符串:

public partial class Form1 : Form
    {
        WebClient client;
        string url;
        string[] Search(string SearchParameter);


        public Form1()
        {
            InitializeComponent();

            url = "http://chatroll.com/rotternet";
            client = new WebClient();




            webBrowser1.Navigate("http://chatroll.com/rotternet");
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        static void DownloadDataCompleted(object sender,
           DownloadDataCompletedEventArgs e)
        {



        }


        public string SearchForText(string SearchParameter)
        {
            client.DownloadDataCompleted += DownloadDataCompleted;
            client.DownloadDataAsync(new Uri(url));
            return SearchParameter;
        }

我想使用WebClient并下载数据同步,最后将网站源内容放在字符串中。

3 个答案:

答案 0 :(得分:7)

不需要异步,真的:

var result = new System.Net.WebClient().DownloadString(url)

如果您不想阻止UI,可以将上述内容放在BackgroundWorker中。我建议使用它而不是Async方法的原因是因为它使用起来非常简单,因为我怀疑你只是将这个字符串粘贴到UI的某个地方(BackgroundWorker会让你的生活更轻松)。

答案 1 :(得分:5)

使用WebRequest

WebRequest request = WebRequest.Create(url);
request.Method = "GET";
WebResponse response = request.GetResponse();
Stream stream = response.GetResponseStream();
StreamReader reader = new StreamReader(stream);
string content = reader.ReadToEnd();
reader.Close();
response.Close();

您可以轻松地从另一个线程中调用代码,或使用背景文件 - 这将使您的UI在检索数据时具有响应性。

答案 2 :(得分:5)

如果您使用的是.Net 4.5,

public async void Downloader()
{
    using (WebClient wc = new WebClient())
    {
        string page = await wc.DownloadStringTaskAsync("http://chatroll.com/rotternet");
    }
}

适用于3.5或4.0

public void Downloader()
{
    using (WebClient wc = new WebClient())
    {
        wc.DownloadStringCompleted += (s, e) =>
        {
            string page = e.Result;
        };
        wc.DownloadStringAsync(new Uri("http://chatroll.com/rotternet"));
    }
}