Laden...

Link des Icon feststellen

Erstellt von dennisspohr vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.999 Views
dennisspohr Themenstarter:in
420 Beiträge seit 2007
vor 16 Jahren
Link des Icon feststellen

Hallo @ all,

ich würde ihm Quelltext einer HTML-Datei gerne den Pfad zum Favoriten-Icon herauskiregen. Dazu wollte ich die Möglichkeit nutzen:


HtmlElementCollection links = webBrowser1.Document.Links;

foreach (HtmlElement link in links) 
{
    string pfad = link.GetAttribute("href").ToString();
}

Damit sollte er mit alle Links ausspucken, macht er auch mehr oder weniger...allerdings nur Links aus dem Body-Teil, nichts aus dem Header.... 😦
Wie kann ich ihm klar machen, dass er auch die Links aus dem Header suchen soll?

Danke für alle Antworten!!

830 Beiträge seit 2005
vor 16 Jahren

Hallo dennisspohr,

Codeproject

Gruss
Friedel

Ohne Ziel ist auch der Weg egal.

dennisspohr Themenstarter:in
420 Beiträge seit 2007
vor 16 Jahren

jau danke, es hat geklappt!!
Un wie zeige ich das Icon (was ja bis jetzt nur im Internet exisitert...) in einer PictureBox an?

lg Dennis

830 Beiträge seit 2005
vor 16 Jahren

Wird doch genau in dem Projekt von CodeProject gemacht... !?

Image aus dem Stream "erstellen" und PB zuweisen.

Friedel

Ohne Ziel ist auch der Weg egal.

664 Beiträge seit 2005
vor 16 Jahren

btw, die Frage gabs heute schon einmal --> Webbrowser: Icon anzeigen

dennisspohr Themenstarter:in
420 Beiträge seit 2007
vor 16 Jahren

Vorerst danke für die Antworten!
Ich habe mir den Artikel mal genau angeguckt...allerdings weißt mein darausgeleiteter Quelltext einen Fehler auf...denn es wird kein Icon angezeigt... 😦

(iconPath = z.B. "http://web.de/icon.ico"


WebRequest requestImg = WebRequest.Create("http://" + e.Url.Host + iconPath);

WebResponse response = requestImg.GetResponse();
Stream myStream = response.GetResponseStream();

Image img = Image.FromStream(myStream);
this.pictureBox1.Image = img;

webBrowser1.Url = requestImg.RequestUri;
webBrowser1.Update();

Wisst ihr warum?

lg Dennis

830 Beiträge seit 2005
vor 16 Jahren

Wenn es jetzt nur um Web.de geht, das favicon liegt hier:
http://img.web.de/web/img/v4/web.ico

Gruss
Friedel

PS: Gibt mal http://web.de/favicon.ico im Browser ein

Ohne Ziel ist auch der Weg egal.

dennisspohr Themenstarter:in
420 Beiträge seit 2007
vor 16 Jahren

Hallo Friedel,

wo die Icons liegen, den Ofad, den weiß ich doch schon längst 😛 Das war nur ein Bsp...aber ich möchte wissen wie diese Icon mit Hilfe ihrer URL in einer PictureBox anzeigen kann. Ich hatte es ja schon versucht, aber es klappt nicht:


WebRequest requestImg = WebRequest.Create("http://" + e.Url.Host + iconPath);

WebResponse response = requestImg.GetResponse();
Stream myStream = response.GetResponseStream();

Image img = Image.FromStream(myStream);
this.pictureBox1.Image = img;

webBrowser1.Url = requestImg.RequestUri;
webBrowser1.Update();

lg Dennis

830 Beiträge seit 2005
vor 16 Jahren

Also, wenn ich in dem Beispiel von Codeproject den Proxy rausnehme, funzt das Beipiel bei mir einwandfrei.

Gruss
Friedel

Ohne Ziel ist auch der Weg egal.

dennisspohr Themenstarter:in
420 Beiträge seit 2007
vor 16 Jahren

irgendetwas mach ich falsch 😦

Kannst du mir deinen Quelltext mal posten?

830 Beiträge seit 2005
vor 16 Jahren

Es ist nicht mein Code 🙂

Auszug aus der Methode, welche das Icon ausliest und in der PictureBox anzeigt:


string iconPath = "";

Image img = null;
Stream myStream = null;


WebRequest requestImg = WebRequest.Create("http://" + e.Url.Host + "/favicon.ico");

requestImg.Timeout = 10000;

WebResponse response = requestImg.GetResponse();

if (response.ContentLength > 0) {
  myStream = response.GetResponseStream();
} else {
  HtmlDocument doc = webBrowser1.Document;
  HtmlElementCollection collect = doc.GetElementsByTagName("link");

  foreach (HtmlElement element in collect) {
    if (element.GetAttribute("rel") == "SHORTCUT ICON")
      iconPath = element.GetAttribute("href");
  }

  this.Text = doc.Title;

  requestImg = WebRequest.Create("http://" + e.Url.Host + iconPath);

  response = requestImg.GetResponse();

  myStream = response.GetResponseStream();
}

img = Image.FromStream(myStream);
this.pictureBox1.Image = img;

Gruss
Friedel

Ohne Ziel ist auch der Weg egal.

dennisspohr Themenstarter:in
420 Beiträge seit 2007
vor 16 Jahren

danke für Posten des Quelltextes!

Aber bei mir funzt es immernoch nicht...was hast du für nen ie? ich hab 6, vielleicht desswegen?

lg Dennis

830 Beiträge seit 2005
vor 16 Jahren

Das hat ja nichts mit dem IE zu tun, oder ändert dieser das UserControl WebBrowser und/oder die Klasse WebRequest, bwz. WebResponse ich gehe mal stark davon aus, und hoffe sehr das dem nicht so ist.

"Sitzt" du vielleicht hinter einem Proxy, oder hast eine Firewall, welche diese Aktion nicht zulässt?
Was macht das Programm von CodeProject? Läuft das, zumindest wenn man die Zeilen mit dem Proxy rausnimmt, bei dir korrekt?

Wenn nicht, tut es mir leid, dann habe ich auch keine Antwort(en) mehr X(

Gruss
Friedel

Ohne Ziel ist auch der Weg egal.

dennisspohr Themenstarter:in
420 Beiträge seit 2007
vor 16 Jahren

Hallo Friedel,

mein Fehler....verdammt^^ ich sitz ja hier in der Firma und benutz einen Proxy... peinlich
Aber was ich denn für daten eingeben?? Irgendwie schein ich sie wohl falsch einzugeben.. 😦

lg Dennis