2011-03-18 66 views
3
var uri = new Uri("http://store.scrapbook.com/cos-pad825.html?t12-13=cosmo%20cricket&date=20110309"); 
var request = (HttpWebRequest)WebRequest.Create(url); 
var cookieContainer = new CookieContainer(); 

request.CookieContainer = cookieContainer; 
request.UserAgent = @"Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5"; 
request.Method = "GET"; 
request.AllowAutoRedirect = true; 
request.Timeout = 15000; 

var response = (HttpWebResponse)request.GetResponse(); 
var page = new HtmlDocument(); 
var stream = response.GetResponseStream(); 
page.Load(stream); 

導致錯誤。在加載(流)調用。有任何想法嗎?HtmlAgilityPack HtmlDocument.Load拋出異常「對象未設置爲實例」

+0

是空的嗎? – 2011-03-18 09:02:02

+0

這裏是在HtmlAgilityPack.HtmlDocument.ReadDocumentEncoding(HtmlNode節點) 堆棧跟蹤在HtmlAgilityPack.HtmlDocument.PushNodeEnd(的Int32索引,布爾接近) 在HtmlAgilityPack.HtmlDocument.Parse() 在HtmlAgilityPack.HtmlDocument.Load(TextReader的閱讀器) – 2011-03-18 09:19:17

+0

我認爲你最好的選擇是調試這段代碼。從codeplex獲取源代碼並進行調試。 – 2011-03-18 09:40:44

回答

3

的錯誤,當我運行你的代碼是我得到:

System.ArgumentException: 'ISO-8559-1' is not a supported encoding name. 

它是由標準的.NET Framework編碼類拋出。這意味着該頁面聲明瞭.NET不支持的編碼。我固定它是這樣的:

var page = new HtmlDocument(); 
page.OptionReadEncoding = false; 

PS:我使用HTML敏捷性包1.3版

+0

你達人!我希望我能看到你看到的例外。 – 2011-03-21 23:11:28

+0

最後一個問題給你,西蒙,我保證,看看你是否有第二個問題。 http://stackoverflow.com/questions/5385010/can-htmlagilitypack-handle-an-xml-file-that-c​​omes-with-an-xsl-file-to-render-html – 2011-03-21 23:40:23

+0

@Adrian adkison - 我回答了。 – 2011-03-22 11:01:09

0

也許不是你所需要的答案,但堆棧跟蹤表明您以後過去發生的反應異常流類型轉換爲頁面的加載方法。
這可能是值得的HTMLDocument的分配之前增加一個TextReader的,流對象傳遞給還。然後將textreader var傳遞給htmldoc的Load方法。

之前你調試的最新htmlagility的源代碼,我覺得你應該先編輯您的問題,包括所有感興趣的類型/道具的狀態,爲了清楚。

相關問題