Tatsächliche URL ermitteln

Status
Nicht offen für weitere Antworten.

inflamer

Bekanntes Mitglied
Hallo!

folgendes Problem, das bestimmt einfach zu lösen ist,
man muss _einfach_ nur wissen wie... 😉

mein Programm soll eine HTML-Datei nach Bild-URLs parsen und diese anschliessend
herunterladen, ähnlich wie dies ein Web-Browser auch macht. Bei Bildern mit absoluten
Pfadangaben ist es soweit kein Problem, nicht so bei Bildern, wo nur der zur
enthaltenden HTML-Datei relative Pfad angegeben ist, z.B. "/images/logo.jpg"...

Wie kann mann also z.B. bei "http://www.beispiel.de/bilder/index.anyextension"
erkennen, ob "index.anyextension" eine datei oder ein ordner ist?

URL#getPath() liefert hier 'leider' nur das, was in der URL nach dem Host kommt,
nämlich "/bilder/index.anyextension", ähnlich URL#getFile()...

(Im HTTP-Header steht sowas auch nicht drin.)
 
rausfinden, ob sich hinter einer url eine datei oder ein ordner verbirgt ist nicht moeglich.
aber wozu glaubst du auch das zu brauchen?
bei relativen angaben musst du doch nur die url vorne dranhaengen, von der du die datei her hast, die du parst (hierbei alles bis zum letzten "/").

gruss
gast
 
Gast hat gesagt.:
bei relativen angaben musst du doch nur die url vorne dranhaengen, von der du die datei her hast, die du parst (hierbei alles bis zum letzten "/").

gruss
gast

Hallo!

Das Problem ist, wie gesagt, dass sobald Du eine URL hast wie "http://www.beispiel.de/xyz", weiss das Programm nicht mehr, ob "xyz" nun ein ordner ist, der z.B. eine "index.html" beinhaltet, oder ob "xyz" selbst eine html-datei ist.
Soll dem relativen Pfad, den das Programm beim Parsen in der gelieferten HTML vorfindet, nun "http://www.beispiel.de/xyz/" oder "http://www.beispiel.de/" vorangestellt werden?

Eine Lösung konnte ich bereits finden, die geht ungefähr so (wen's interessiert):

Code:
URL url = new URL("http://www.beispiel.de/xyz");
URLConnection con = url.openConnection();
// jetzt kommts: einen HTTP-Request auslösen, z.B. durch eine
// abfrage des MIME-Types der Resource
con.getContentType();
url = con.getURL();

Nach einem HTTP-Request wird der URL ein Slash angehängt, sofern
"xyz" ein ordner ist. Keine schöne Lösung, ich weiss, für eine bessere
wäre ich nach wie vor dankbar.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben