当使用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的包装器。
使用Peek
方法,您可以保证有一个完整的行准备为红色
我打赌你得到的是部分行(实际上在当前流位置中断)。
事实上,我认为这与两个类中的任何一个都没有关系,而更多的是与你如何阅读结果有关。
是否尝试WebClient.DownloadString()方法