Как я могу добавить webRequest для установки таймаута при загрузке URL-документа в документ HtmlAgilityPack?

c# html-agility-pack

Вопрос

У меня есть этот код при загрузке URL:

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 нет никакого свойства или класса timeout. Поэтому я решил создать новую функцию в моей Form1, которая будет использовать webrequest и webresponde, и установить тайм-аут в этой новой функции, а затем вызвать эту функцию перед загрузкой url.

Может ли кто-нибудь показать мне, как заставить новую функцию работать с моим кодом? Также с тайм-аутом.

Благодарю.

Принятый ответ

Я ничего не знаю о тайм-ауте html agility. но я использую его вот так. Может быть, это полезно для вас. Удачи.

    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/");


Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему