HtmlAgilityPack HtmlDocument.Load выдает исключение «объект не установлен на экземпляр» - PullRequest
3 голосов
/ 18 марта 2011
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 (поток).Есть идеи?

Ответы [ 2 ]

3 голосов
/ 18 марта 2011

Ошибка, которую я получаю при запуске вашего кода:

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

Он генерируется стандартными классами кодирования .NET Framework. Это означает, что на странице объявлена ​​кодировка, не поддерживаемая .NET. Я исправил это так:

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

PS: я использую Html Agility Pack версии 1.3

0 голосов
/ 18 марта 2011

Возможно, это не тот ответ, который вам нужен, но трассировка стека указывает на исключение, которое произошло после того, как вы пропустили тип потока ответа для метода загрузки страницы.
Возможно, стоит добавить TextReader перед назначением htmldocument и передатьот объекта потока к этому.Затем передайте textreader var методу Load htmldoc.

Прежде чем отлаживать исходный код для последней версии htmlagility, я думаю, вам следует сначала отредактировать свой вопрос, включив в него состояния всех типов / интересующих объектов для ясности.

...