【发布时间】:2012-02-11 08:14:53
【问题描述】:
我的程序使用WebRequest 和WebResponse 在迭代中从给定的URL 下载HTML 文件。例如,URL 字符串看起来像
http://www.aaaa.com/cccc=varB
其中varB 是循环中每次迭代的不同字符串。
将文件下载到流中后,它会在流中搜索特定的文本字符串并将它们存储到单独的文本文件中。但是,我发现在某些迭代中它似乎没有读取任何内容(当我在地址栏中键入它时,它的 URL 字符串是有效的,因此它不是无效的 URL)。
我将流和WebResponse 对象放在using 块中,我也有一个try…catch 块,但没有出现异常。在循环中使用WebRequest 和WebResponse 有问题吗?
try
{
foreach (string name in names)
{
string urlstr = "…"; // URL format like I mentioned earlier
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(urlstr);
myRequest.Timeout = 30000;
//store the response in myResponse
using (HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse())
{
//register I/O stream associated with myResponse
using (Stream myStream = myResponse.GetResponseStream())
{
//create StreamReader that reads characters one at a time
using (StreamReader myReader = new StreamReader(myStream))
{
myReader.ReadLine();
sw.WriteLine(name + " " + myReader.ReadLine());
}
}
}
}
sw.Close();
}
结果将如下所示:
name1 stuffReadfromfile
name2 stuffReadfromfile
name3 stuffReadfromfile
name4
name5 stuffReadfromfile
name6
name7 stuffReadfromfile
name8 stuffReadfromfile
name9
name10 stuffReadfromfile
即使在每个名称之后应该有stuffReadfromfile。
【问题讨论】:
-
在尝试获取响应流之前尝试阅读 myResponse.StatusCode。
标签: c# webrequest webresponse