加載網址時我有這段代碼:
private List<string> test(string url, int levels,DoWorkEventArgs eve)
{
HtmlWeb hw = new HtmlWeb();
List<string> webSites;
try
{
this.Invoke(new MethodInvoker(delegate { Texts(richTextBox1, "Loading The Url: " + url + "..." , Color.Red); }));
doc = hw.Load(url);
this.Invoke(new MethodInvoker(delegate { Texts(richTextBox1, "Done " + Environment.NewLine, Color.Red); }));
有時當它加載url時,由於url變量中的網站沒有響應,因此需要花費很多時間。我想添加一個超時,所以讓我們說在X秒之後它會拋出一條消息,比如“有一個超時”。
現在HtmlAgilityPack沒有任何超時屬性或類。所以我想在我的Form1中創建一個新函數,它將使用webrequest和webresponde並在這個新函數中設置超時,然後在加載url之前調用此函數。
有人可以告訴我如何使新功能與我的代碼一起使用?還有超時。
謝謝。
關於html
敏捷性的超時,我什麼都不知道。但我這樣用它。也許它對你有幫助。祝你好運。
String Data = GetURLData(url);
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(Data);
public static string GetURLData(string URL)
{
try
{
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(URL);
request.UserAgent = "Omurcek";
request.Timeout = 4000;
WebResponse response = request.GetResponse();
Stream stream = response.GetResponseStream();
StreamReader reader = new StreamReader(stream);
return reader.ReadToEnd();
}
catch (Exception ex )
{
LogYaz("Receive DATA Error : " + URL + ex.ToString());
return "";
}
}
資料來源: http : //blog.jongallant.com/2012/07/htmlagilitypack-set-timeout.html#.VBY-_fmSz3Q
var web = new HtmlWeb();
web.PreRequest = delegate(HttpWebRequest webRequest)
{
webRequest.Timeout = 4;
return true;
};
var doc = web.Load("http://www.msn.com/");