HtmlDocument.LoadHtml von WebResponse?

.net c# html html-agility-pack httpwebrequest

Frage

Ich versuche, ein Bild aus einem geposteten Link zu extrahieren, und die erste Überprüfung, die ich mache, besteht darin, festzustellen, ob der Link zu einem einfachen Bild wie diesem gehört:

    HttpWebRequest request;
    WebResponse webresponse;

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

     webresponse = request.GetResponse();
     if (webresponse.ContentType.StartsWith("image/"))
       ...

Wenn dies nicht gefunden wird, möchte ich mit dem HTML Agility Pack fortfahren, aber um das ausführen zu können, muss ich folgendes ausführen:

    HttpWebRequest request;
    WebResponse webresponse;

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

     webresponse = request.GetResponse();
     if (webresponse.ContentType.StartsWith("image/"))
       ...

Das Problem ist, dass LoadHtml keine Quelle findet, selbst wenn ich sicher bin, dass es in der Antwort HTML-Code gibt. Ich vermute, dass die HTML-Formatierung nicht korrekt ist?

Hier ist ein Teil dessen, was ReadToEnd generiert:

    HttpWebRequest request;
    WebResponse webresponse;

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

     webresponse = request.GetResponse();
     if (webresponse.ContentType.StartsWith("image/"))
       ...

Ich kann sehen, dass die Zeichenfolge einige Newline (\ r \ n) Befehle enthält, wenn das wichtig ist?

Mein Ziel ist es einfach zu vermeiden, die Webseite mehr als einmal herunterzuladen, sonst könnte ich den WebClient.DownloadString(url); um es in einem Format herunterzuladen, von dem ich weiß, dass es funktioniert.

Akzeptierte Antwort

Das hat funktioniert:

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



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum