Моя программа использует WebRequest
и WebResponse
для загрузки файла HTML с заданного URL-адреса в итерации. Например, строка 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
.