Autor Beitrag
sky21
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 141

W7
D2010, XE2
BeitragVerfasst: Mi 23.03.11 16:42 
Hi all

Gibt es eine Möglichkeit dem TWebbrwoser mitzuteilen, dass er auch Dateien ohne Dateiendung laden soll?

Beispiel:
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19276
Erhaltene Danke: 1741

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 23.03.11 17:12 
user profile iconsky21 hat folgendes geschrieben Zum zitierten Posting springen:
Beispiel:
www.webserver.com/eine_datei

Wobei der Inhalt von "eine_datei" HTML Code ist.
Das kann ich nicht reproduzieren, dieser Code funktioniert hier ohne jegliche Anpassungen korrekt: :nixweiss:
ausblenden Delphi-Quelltext
1:
  WebBrowser1.Navigate('http://www.webserver.com/eine_datei');					
sky21 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 141

W7
D2010, XE2
BeitragVerfasst: Mi 23.03.11 17:50 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconsky21 hat folgendes geschrieben Zum zitierten Posting springen:
Beispiel:
www.webserver.com/eine_datei

Wobei der Inhalt von "eine_datei" HTML Code ist.
Das kann ich nicht reproduzieren, dieser Code funktioniert hier ohne jegliche Anpassungen korrekt: :nixweiss:
ausblenden 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 ...


Zuletzt bearbeitet von sky21 am Mi 23.03.11 18:18, insgesamt 1-mal bearbeitet
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19276
Erhaltene Danke: 1741

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 23.03.11 18:00 
user profile iconsky21 hat folgendes geschrieben Zum zitierten Posting springen:
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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 141

W7
D2010, XE2
BeitragVerfasst: Mi 23.03.11 18:49 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconsky21 hat folgendes geschrieben Zum zitierten Posting springen:
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19276
Erhaltene Danke: 1741

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 141

W7
D2010, XE2
BeitragVerfasst: Mo 28.03.11 14:31 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
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
ausblenden 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.