C# HtmlDocument.LoadHtml是否来自WebResponse?

C# HtmlDocument.LoadHtml是否来自WebResponse?,c#,html,.net,httpwebrequest,html-agility-pack,C#,Html,.net,Httpwebrequest,Html Agility Pack,我尝试从发布的链接中提取图像,我所做的第一项检查是查看链接是否指向如下所示的普通图像: HttpWebRequest request; WebResponse webresponse; request = (HttpWebRequest)HttpWebRequest.Create(url); webresponse = request.GetResponse(); if (webresponse.ContentType.StartsWith("im

我尝试从发布的链接中提取图像,我所做的第一项检查是查看链接是否指向如下所示的普通图像:

    HttpWebRequest request;
    WebResponse webresponse;

    request = (HttpWebRequest)HttpWebRequest.Create(url);

     webresponse = request.GetResponse();
     if (webresponse.ContentType.StartsWith("image/"))
       ...
如果没有找到,我想继续使用HTML Agility Pack,但要做到这一点,我需要运行:

HtmlDocument doc;
reader = new StreamReader(webresponse.GetResponseStream());
doc.LoadHtml(reader.ReadToEnd());
问题是,即使我确定响应中有HTML代码,LoadHtml也找不到任何源代码。我怀疑HTML的格式不正确

以下是ReadToEnd将生成的部分内容:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="sv" lang="sv">
    <head><title>
        X - Eclipse - 2011
    </title>

        <!--[if lt IE 7]>
        <script defer type="text/javascript" src="../javascript/pngfix.js"></script>
        <![endif]-->
        <!--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-->

        <meta http-equiv="Content-type" content="text/html; charset=iso-8859-1" /><link href="../../../App_Themes/X/mainStyleSheet.css" type="text/css" rel="stylesheet" /><meta name="author" content="" /><meta name="copyright" content="X.net" /><meta name="description" content="Välkommen in till ett av Sveriges största Xcommunity." /><meta name="keywords" content="X, rollspel, boardgamegeek, boardgame, X.net, X.net, community, Jimmy, Nilsson, schack, risk, puerto rico" /><script language="javascript" type="text/javascript" src="/sites/X/javascript/common.js"></script><script language="javascript" type="text/javascript" src="/sites/X/javascript/ajaxHandler.js"></script><script language="javascript" type="text/javascript" src="/javascript/jquery.js"></script><link rel="shortcut icon" href="/App_Themes/X/Images/common/browserIcon/favicon.ico" /><link rel="icon" href="/App_Themes/X/Images/common/browserIcon/animated_favicon1.gif" type="image/gif" /></head>
    <body>
        <div id="topBack">
        <div id="siteContainer">
        <form method="post" action="game.aspx?gameId=72125" id="aspnetForm" enctype="multipart/form-data">

<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDw....

X-Eclipse-2011
这起到了作用:

request = (HttpWebRequest)HttpWebRequest.Create(url);
webresponse = (HttpWebResponse)request.GetResponse();
if (webresponse.ContentType.StartsWith("image/"))
{...}
if (webresponse.ContentType.StartsWith("text/html"))
{
     var resultStream = webresponse.GetResponseStream();
     doc.Load(resultStream);
}

为什么不使用HtmlWeb提供的类请解释,这如何解决我的问题?我可以用这个类检查ContentType,然后用它来填充doc.LoadHtml吗?我已经读过了,但不知道如何在我的例子中使用它。我没有问题,以获取网页,我需要做的是检查,如果它是一个图像或HTML页面,这是问题。现在我必须先获取一次页面,检查它是否是带有HttpWebRequest的图像,然后我需要使用webClient获取HTMLDocument的HTML。您提供的链接的OP在获取需要cookies的页面时遇到问题。请使用HtmlWeb获取页面,不要使用HttpWebRequest,这是链接的全部要点。是的,我知道,但为什么?我可以看到它有一个Load methid返回HtmlDocument,与WebClient.DownloadString相比有什么不同?我如何检查内容类型(例如webresponse.ContentType.StartsWith(“image/”)?