当使用WebRequest和WebClient时,结果不同

本文关键字:结果 WebClient WebRequest | 更新日期: 2023-09-27 18:07:15

我们有一个自动生成的文本文件,并放在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的包装器。

当使用WebRequest和WebClient时,结果不同

使用Peek方法,您可以保证有一个完整的行准备为红色

我打赌你得到的是部分行(实际上在当前流位置中断)。

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

是否尝试WebClient.DownloadString()方法