HtmlAgilityPackでドキュメントにURLをロードするときに、タイムアウトを設定するwebRequestを追加するにはどうすればよいですか?

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にはタイムアウトプロパティまたはクラスはありません。だから私は、WebExquestとwebrespondeを使用し、この新しい関数でタイムアウトを設定し、URLをロードする前にこの関数を呼び出すForm1で新しい関数を作成すると考えました。

誰かが私のコードで動作する新しい関数を作る方法を私に見せてもらえますか?またタイムアウトあり。

ありがとう。

受け入れられた回答

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



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ