2011-08-02 16 views
1

htmlagiliypackのタイムアウト値をどのように増やしますか?このエラーは多く発生していますが、タイムアウトの制限を増やしたい、またはリクエストを強制終了してもう一度やり直してください。C#htmlagilitypack操作がタイムアウトしました

resultingHTML = null; 
     try 
     { 
      string htmlstring = string.Empty; 
      HttpWebRequest newwebRequest = (HttpWebRequest)WebRequest.Create(htmlURL); 
      HttpWebResponse mywebResponce = (HttpWebResponse)newwebRequest.GetResponse(); 
      if (mywebResponce.StatusCode == HttpStatusCode.OK) 
      { 
       Stream ReceiveStream = mywebResponce.GetResponseStream(); 
       using (StreamReader reader = new StreamReader(ReceiveStream)) 
       { 
        htmlstring = reader.ReadToEnd(); 
       } 
       HtmlDocument doc = new HtmlDocument(); 
       doc.Load(htmlstring); 
       HtmlWeb hwObject = new HtmlWeb(); 
       HtmlNode body = doc.DocumentNode.SelectSingleNode("//body"); 
       resultingHTML = body.InnerHtml.ToString(); 
      } 

     } 
+0

これを動作させるには、.Load()を.LoadHtml()に置き換える必要があります。 –

答えて

3

ここではWebリクエストでHTMLを読むためにHtmlAgilityパックを使用しているとしますか?

私はあなたがタイムアウトを指定することができ..where、代わりに

http://msdn.microsoft.com/en-us/library/system.net.webrequest.getresponse.aspx#Y700

オブジェクトWebRequestクラスのフレームワークを使用して助言します。 try/catchブロックでラップするだけで、タイムアウト(およびその他の接続エラー)を捕捉できます。

次に、HtmlAgilityを介してWebResponseオブジェクトから生成されたHTMLを直接解析します。

HTMLDocumentのドキュメント=新のHTMLDocument(:ここ

はあなたが希望にWebResponseから文字列としてHTMLを持っていたらにWebResponse

http://msdn.microsoft.com/en-us/library/system.net.webresponse.getresponsestream.aspx

からHTMLを取得する方法の例です。 );
doc.LoadHtml(html);

+0

正しいのですが、これをhtmlagilityに読み込む方法の例がありますか? –

+0

答えが更新されました。 –

+0

は、Webページを2回読み込まないようにしていますか?あるいは私はそれを正しい方法で見ていないのですか?あなたがリクエストを受け取ったら、もう一度ロードしなければならないから –

0
HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create("wwww.someurl.com"); 
     httpWebRequest.Timeout = 10000; // 10 second timeout 
     using(HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse()) 
     { 
      if (httpWebResponse.StatusCode == HttpStatusCode.OK) 
      { 
       using(Stream responseStream = httpWebResponse.GetResponseStream()) 
       { 
        using (StreamReader reader = new StreamReader(responseStream)) 
        { 
         var htmlstring = reader.ReadToEnd(); 
         HtmlDocument doc = new HtmlDocument(); 
         doc.Load(htmlstring); 
        } 
       } 

      } 
     } 

私も見てます:ちょうど、HttpWebRequestクラスのタイムアウトとReadWriteTimeout bettween違いを理解するために Adjusting HttpWebRequest Connection Timeout in C#

+0

私はあなたの答えを試して、プログラムは例外をスローする ''パスの違法文字 ''私はURLを使用するhttp://www.betstudy.com/predictions/germany/bundesliga/ –

関連する問題