使用WebRequest与WebClient时的结果不同

时间:2011-09-02 13:11:15

标签: c# webclient webrequest

我们有一个自动生成并放入Web服务器的文本文件。任务是逐行读取文件并将记录插入数据库中。以下代码在C#中:

            WebRequest request = WebRequest.Create(url);
            WebResponse response = request.GetResponse();
            StreamReader r = new StreamReader(response.GetResponseStream());

            while (r.Peek() > -1)
            {
                string s = r.ReadLine().Trim();
                //insert string into a db.
            }

当我这样做时,我不断得到整个文件,范围从9000 - 10000行。另一方面,当我使用以下内容时,有时会得到一个截断的文件(少行)

            WebClient client = new WebClient();
            StreamReader r = new StreamReader(client.OpenRead(url));

            while (r.Peek() > -1)
            {
                string s = r.ReadLine().Trim();
                //insert string into a db.
            }

任何人都可以解释这个区别吗?为什么结果会有所不同?我的印象是WebClient只是HttpWebRequest的包装。

1 个答案:

答案 0 :(得分:0)

使用Peek方法,您可以保证整条线都准备好为红色。

我打赌你得到了部分线(实际上在当前的流位置打破了)。

事实上,我认为这与两个类别中的任何一个都没有关系,而是与你如何阅读结果有关。

您是否尝试过WebClient.DownloadString()方法?