Entwickler-Ecke
Internet / Netzwerk - TWebbrowser: Datei ohne Dateiendung laden?
sky21 - Mi 23.03.11 16:42
Titel: TWebbrowser: Datei ohne Dateiendung laden?
Hi all
Gibt es eine Möglichkeit dem TWebbrwoser mitzuteilen, dass er auch Dateien ohne Dateiendung laden soll?
Beispiel:
http://www.webserver.com/eine_datei
Wobei der Inhalt von "eine_datei" HTML Code ist.
Der Aufruf von Navigate2() kommt nie zurück; bleibt hängen.
Ferner muss meine TWebbrowser Instanz auch Dateien mit exotischen Dateiendungen laden. z.B. "Mein_Dokument.Foo". Dies konnte ich dem IE allerdings mittels File-Type-Registrierung beibringen ;-)
jaenicke - Mi 23.03.11 17:12
Das kann ich nicht reproduzieren, dieser Code funktioniert hier ohne jegliche Anpassungen korrekt: :nixweiss:
Delphi-Quelltext
1:
| WebBrowser1.Navigate('http://www.webserver.com/eine_datei'); |
sky21 - Mi 23.03.11 17:50
jaenicke hat folgendes geschrieben : |
Das kann ich nicht reproduzieren, dieser Code funktioniert hier ohne jegliche Anpassungen korrekt: :nixweiss: Delphi-Quelltext 1:
| WebBrowser1.Navigate('http://www.webserver.com/eine_datei'); | |
Ok da hast du natürlich recht. Das Problem mit dem Beispiel ist, dass es tatsächlich webserver.com gibt ;-) und wenn man "http://www.webserver.com/eine_datei" aufruft erscheint eine page-not-found webseite (404?) Ich habe die URL jedoch zur zur Verdeutlichung meines Problems verwendet.
Ergänzung: Ich habe gerade gesehen, dass der webserver mit dem Inhalt tatsächlich antwortet (HTTP 200 OK -> text/plain) aber irgendwie schafft es mein TWebbrwoser trotzdem nicht, OnDocumentComplete() aufzurufen ...
jaenicke - Mi 23.03.11 18:00
sky21 hat folgendes geschrieben : |
| wenn man "http://www.webserver.com/eine_datei" aufruft erscheint eine page-not-found webseite (404?) Ich habe die URL jedoch zur zur Verdeutlichung meines Problems verwendet. |
Das zeigt doch aber, dass genau dein Problem genau dort nicht auftritt. Das ist schließlich auch eine normale HTML-Seite...
Und es wäre mir auch neu, dass das nicht geht.
sky21 - Mi 23.03.11 18:49
jaenicke hat folgendes geschrieben : |
sky21 hat folgendes geschrieben : | | wenn man "http://www.webserver.com/eine_datei" aufruft erscheint eine page-not-found webseite (404?) Ich habe die URL jedoch zur zur Verdeutlichung meines Problems verwendet. | Das zeigt doch aber, dass genau dein Problem genau dort nicht auftritt. Das ist schließlich auch eine normale HTML-Seite...
Und es wäre mir auch neu, dass das nicht geht. |
Das stimmt so nicht ganz: Bei Navigate2() auf "http://www.webserver.com/eine_datei" antwortet der Webserver mit "HTTP 404 - Page not found" und liefert mir anschliessend eine tolle Fehlerseite. Bei TWebbrowser wird OnNavigateError() aufgerufen. Soweit so gut; offenbar existiert die seite nicht.
Jetzt, navigiere ich auf "http://<mein_server_der_nur_intern_erreichbar_ist>/<eine_datei_die_existiert_mit_HTML_Inhalt>":
Mein Problem ist, dass der webserver mit "HTTP 200 - OK" antwortet, jedoch dann kein OnDocumentComplete() aufruft.
Sorry, das mit "http://www.webserver.com/eine_datei" war ein falsches Beispiel...
jaenicke - Mi 23.03.11 19:19
Dann liefert der Server offenbar keinen korrekten Header zu dieser Datei aus. Also ich meine speziell um was für Daten es sich handelt.
Denn wenn der Server nicht im Header angibt, dass es eine HTML-Seite ist, wissen das der Browser und auch der TWebBrowser auch nicht...
sky21 - Mo 28.03.11 14:31
jaenicke hat folgendes geschrieben : |
Dann liefert der Server offenbar keinen korrekten Header zu dieser Datei aus. Also ich meine speziell um was für Daten es sich handelt.
Denn wenn der Server nicht im Header angibt, dass es eine HTML-Seite ist, wissen das der Browser und auch der TWebBrowser auch nicht... |
Es ist schon zum Verzweifeln: Bennene ich die Dateie auf .html um, dann funktioniert alles wunderbar. Ohne bzw. mit unbekannter Dateiendung bleibt der Browser stehen. Im IP trace sehe ich lediglich, dass der Server mit HTTP/1.1 200 OK (text/plain) und mit der .html Version HTTP/1.1 200 OK (text/html). Aha, offenbar hat mein IE Browser grosse Mühe mit text/plain? Denn: Mit dem Chrome Browser zeigt es mir den "plain text" tatsächlich an. Der Inhalt wird offenbar mit den zweiten Browser auch gar nicht erst versucht zu interpretieren. Soweit so gut. Aber: Lade ich einfach eine Datei "sample" herutner mit reinem text (Antwort HTTP/1.1 200 OK (text/plain), so zeigt mir der IE (bzw. TWebBrowser) auch tatsächlich an. Soviel zur Theorie...
Es geht weiter: Schaue ich den Originalcode (naja, fast orig...)an, so sehe ich den Verweis auf XML/XSD. Entferne ich die oberen beiden Zeilen, dann kann auch meine IE damit umgehen.
// source
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| <?xml version="1.0" encoding="UTF-8"?> <!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="es"> <head> <title>mobiletv</title> <meta http-equiv="REFRESH" content="0;URL=<HIER_EINE_URL>"/> </head>
<body onload="window.location=HIER_EINE_URL';" > <a href="HIER_EINE_URL">Mein Super Link</a> </body>
</html> |
Nun ja, selbst wenn die Seite dann endlich mal geladen werden würde habe ich dann ein Nachfolgeproblem: Ich will einfach an den mit <a> "getängten" Hyperlink geladen. Muss also gleichzeitig noch das meta-Tag "refresh" und das "onload" event unterdrücken... Tja, die Problem gehen scheinbar wirklich nicht aus.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!