HtmlAgilityPack HtmlDocument.Load拋出異常“對象未設置為實例”

c# html-agility-pack

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

導致錯誤。在Load(stream)調用上。有任何想法嗎?

一般承認的答案

我運行代碼時遇到的錯誤是:

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

它是由標準.NET Framework編碼類引發的。這意味著該頁面聲明了.NET不支持的編碼。我這樣修好了:

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

PS:我正在使用Html Agility Pack 1.3版


熱門答案

可能不是您需要的答案,但堆棧跟踪指示在您將響應流類型傳遞到頁面的加載方法後發生的異常。
可能值得在htmldocument賦值之前添加TextReader,並將流對像傳遞給它。然後將textreader var傳遞給htmldoc的Load方法。

在調試最新htmlagility的源代碼之前,我認為您應該首先編輯您的問題,以包含所有類型/道具的狀態,以便清楚。




許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因