Link parsen bzw. zerlegen

Status
Nicht offen für weitere Antworten.

mad-din

Bekanntes Mitglied
Hi Leute!

Ich will mir eine Methode schreiben, die einen beliebigen Link - der als String vorliegt - in seine Einzelteile zerlegt (Protokoll, Subdomain, Host, Port, Path, File, Query). Gibt es so eine Methode vielleicht schon? Wenn nicht, wie gehe ich dieses Problem am besten an? Mit Regexp? Das Problem dahinter ist folgendes: Ich bekomme von einer anderen Anwendung Links, die alle möglichen Formen haben könne, sprich mal komplett mit http://... mal nur host.de/file.endung mal nur /dir1/dir2/?query=irgendwas und diese Links müssen absolut gemacht werden, damit man damit ein Objekt der Klasse URL anlegen kann.
Wie löst man sowas am elegantesten?

Danke schonmal und viele Grüße,
Martin
 

mad-din

Bekanntes Mitglied
Hi!

Die Klasse URL kenn ich schon, benutze ich ja auch in diesem Fall. Aber sowas geht ja nicht:

Code:
URL temp = new URL("/directory/file.html?var1=test");

Da ja dann eine MalformedURLException geschmissen wird und genau das will ich ja vermeiden. Diese URL müsste ja quasi erweitert werden mit http://host.tld

Dafür und da ich die mir übergebenen URLs auch analysieren muss, würde ich gerne ein Methode haben, die z.B. einen String[] zurückliefert mit Protokoll, Host, Port, Path, File und Query. Denn dann kann ich ja auch entscheiden, wenn z.B. Protokoll und Host leer sind, dass ich die anfügen muss, bevor ich eine neue URL-Instanz damit anlege. Nur wäre es Schwachsinn so eine Methode zu entwickeln, wenn es diese bereits gibt. Ich weiß, dass mit der Klasse URL über die Methode getProtocol() das Protokoll herausfinden kann, aber das nützt mir nichts, wenn mir der Link ohne Protokoll o.Ä. vorliegt.

EDIT: So, hab mir jetzt die Klasse URI auch noch angeschaut. Die kann das ja anscheinend. Werde ich doch gleich mal testen, damit würde ich mir jedenfalls einiges sparen.

Danke :D

Viele Grüße,
Martin
 

byte

Top Contributor
Wüsste nicht, dass es sowas schon gibt. Zumal eh fraglich ist, wie man bei dem Beispiel Protokoll und Host ergänzen soll. Raten? ???:L
 

mad-din

Bekanntes Mitglied
Hi!

Nein, raten musste nicht :) Ist immer der gleiche :) Nur sind halt auf Websites nicht immer absolute Links angegeben, also kann man davon ausgehen, dass die relativen sich auf den Host der Website beziehen, die man besucht hat. So funktioniert ja im Endeffekt auch jeder Browser, er nimmt einfach an, dass sich die relativen URLs auf den aktuellen Host beziehen. Sprich du rufst die Seite www.domain.tld auf und darauf befindet sich ein Link mit href="/path/file.html", dann geht der Browser einfach davon aus, dass es sich auf www.domain.tld/path/file.html bezieht. Und genau das mach ich dann eben auch. Relative URLs werden mit dem Starthost verknüpft. Nur dazu müsste ich erstmal wissen, dass es sich um eine absolute oder relative URL handelt und wenn es keine absolute ist, welche Angaben fehlen.

Viele Grüße,
Martin
 

byte

Top Contributor
Ohne zu wissen, wie Du an die relativen URL-Pfade kommst, kann man da schlecht weiterhelfen. Entweder Du besorgst Dir direkt die voll qualifizierten URLs oder Du bastelst Dir halt was eigenes zurecht. Ist ja nun auch nicht wirklich schwierig, sich einen URL-String zu konkatenieren, wenn man alle Informationen vorliegen hat. ;)
 

mad-din

Bekanntes Mitglied
byto hat gesagt.:
wenn man alle Informationen vorliegen hat. ;)

Das ist der Punkt :) Ich bekomme von dem anderen Programm nur Host und Link, der kann absolut sein oder eben nicht. Und dafür hätte ich jetzt gerne eine Methode gehabt, die mir die Bestandteile eines URI in einem String[] oder was auch immer zurückgibt. Dann hätte ich entscheiden können, ja das ist eine relative URL, da muss ich noch den mit übergebenen Host anhängen. Und bevor ich diese Methode selber entwickel, guck ich erstmal, ob es die oder etwas Ähnliches schon gibt und es gab sie (Klasse URI) :D

Viele Grüße,
Martin
 

BlackReloaded

Aktives Mitglied
Hi,

URL temp = new URL("/directory/file.html?var1=test");


Da ja dann eine MalformedURLException geschmissen wird und genau das will ich ja vermeiden. Diese URL müsste ja quasi erweitert werden mit http://host.tld

Wenn die Exception geworfen wird packst du einfach in dem Catch-teil deine Domain hinzu.
Code:
URL temp = null;
String url = "/directory/file.html?var1=test";
String host = "http://host.tld";
try {
    URL temp = new URL(url);
} catch(MalformedURLException e) {
    try {
        URL temp = new URL(host+url);
    } catch (MalformedURLException e) {
        //Da fehlte wohl noch mehr
    }
}


Oder habe ich dich nun falsch verstanden?

MFG Marc
 

BlackReloaded

Aktives Mitglied
Das kann man ja abfangen in der ersten Catch, sollte ja auch kleiner hinweis sein, man müsste ja noch mehr absichern.
und eine URL ist ja eindeutig definiert....
:)

EDIT:

Code:
for(;url.substring(0,2).equals("../"); url = url.substring(3,url.lengh)) {
//Mit der bedingung das das ende des Hostes kein / hat
host = host.substring(0,host.lastIndexOf("/"));
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Class to link Java Allgemeine Java-Themen 4
G Maven link outdated Allgemeine Java-Themen 13
S Link element an vorletzte stelle einfügen Allgemeine Java-Themen 2
D HTTP Http-Link mittels GUI schreiben Allgemeine Java-Themen 5
M redirected link Allgemeine Java-Themen 11
G Datei per Drag and Drop auf den Link öffnen Allgemeine Java-Themen 6
T Youtube Link Allgemeine Java-Themen 4
F.S.WhiTeY JDK installieren Linux: Nach Update link auf Java zerschossen Allgemeine Java-Themen 4
F Parameter im Link /jar-Aufruf Allgemeine Java-Themen 12
kodela aktiver Link in einem Dialog Allgemeine Java-Themen 14
T Link zum Internet Allgemeine Java-Themen 12
M Autostart: Registry oder Link? Allgemeine Java-Themen 6
S regex für einen Link Allgemeine Java-Themen 3
H File Attribut bzw Link erkennen Allgemeine Java-Themen 5
F Link in Applet "verstecken" Allgemeine Java-Themen 3
Nicer Problem mit Link aufruf Allgemeine Java-Themen 6
W Webseite öffnen und Link anklicken Allgemeine Java-Themen 2
P Link in einem ausgewählten Browser öffnen Allgemeine Java-Themen 10
A Überprüfen, ob ein File eine Verknüpfung / Link ist Allgemeine Java-Themen 3
S Link im Browser öffnen Allgemeine Java-Themen 10
S E-Mail-Links: geklickten Link ermitteln Allgemeine Java-Themen 4
S mailto-Link in MessageBox Allgemeine Java-Themen 17
B Browser link aus Java-Applikation öffnen Allgemeine Java-Themen 2
J JSP, Link nur bei erfüllter Bedingung anzeigen Allgemeine Java-Themen 6
J JSP Client LInk einbauen Allgemeine Java-Themen 15
Q || Wie speichert man Dateien wo der Pfad als Link(UNIX)... Allgemeine Java-Themen 11
G http:// in Link umwandeln Allgemeine Java-Themen 14
D Linux Link wird als Ordner interpretiert? Allgemeine Java-Themen 2
S Mauszeiger beim Link! Allgemeine Java-Themen 22
M HTML Link Fehler Allgemeine Java-Themen 5
G Html Link in einem JLabel? Allgemeine Java-Themen 3
G Link zu JCreator oder anderem Tool Allgemeine Java-Themen 2
K Inhalte Parsen von Website Allgemeine Java-Themen 15
W JSON parsen eines ,mit JS.stringify erstellten Strings Allgemeine Java-Themen 27
C Parsen einer sich updatenden Html mithilfe von jsoup Allgemeine Java-Themen 4
O JSON in Integer parsen Allgemeine Java-Themen 5
S Ini Text aus String parsen Allgemeine Java-Themen 1
OnDemand Datenbankdatei parsen Allgemeine Java-Themen 2
N svg(xml) parsen und manipulieren? Allgemeine Java-Themen 3
OnDemand CSV parsen mehrere Zeilen Allgemeine Java-Themen 22
2 mehrere Json Werte Parsen Allgemeine Java-Themen 3
G JSON parsen Allgemeine Java-Themen 3
W String Parsen und auf eigenes Muster anwenden (kein Regex) Allgemeine Java-Themen 11
looparda Datei parsen Allgemeine Java-Themen 1
T Jsoup: Mehrere Links nacheinander parsen Allgemeine Java-Themen 11
C Benutzereingabe von EXCEL-Funktionen parsen Allgemeine Java-Themen 4
B Such-String parsen mit Klammern Allgemeine Java-Themen 2
L Windows CMD werte Parsen. Allgemeine Java-Themen 2
B XML parsen Allgemeine Java-Themen 13
H Bestimmten Wert aus String parsen Allgemeine Java-Themen 7
0 Parsen Allgemeine Java-Themen 7
W Best Practice Dateien parsen Allgemeine Java-Themen 3
X Tags "parsen" Allgemeine Java-Themen 8
A Parsen mit java_cup - Shift/Reduce Problem Allgemeine Java-Themen 12
C Roboter, Befehle parsen Allgemeine Java-Themen 12
M Informationen aus komplexen String parsen Allgemeine Java-Themen 13
W Dateinamen dynamisch Parsen Allgemeine Java-Themen 12
F JavaMail - Lokale eMail-Datei einlesen und parsen? Allgemeine Java-Themen 9
T String in Date parsen (*ohne* bekanntes Format) Allgemeine Java-Themen 8
M Dateien mit Quelltext parsen Allgemeine Java-Themen 7
W RegEx Zeile parsen Medium Allgemeine Java-Themen 8
S Dateiname mit Regex parsen Allgemeine Java-Themen 3
K _alle_ Sonderzeichen parsen Allgemeine Java-Themen 2
S Feher beim Parsen eines Datums Allgemeine Java-Themen 4
E Reguläre Txt in Tree parsen Allgemeine Java-Themen 2
S Strings zu Color-Instanzen parsen? Allgemeine Java-Themen 7
S Überprüfung/Parsen eines Byte-Arrays Allgemeine Java-Themen 9
martin82 Java-Code aus Text-Datei parsen Allgemeine Java-Themen 3
A String zu Datum parsen - SimpleDateFormat Problem Allgemeine Java-Themen 8
A Datum parsen Allgemeine Java-Themen 9
G Parsen von: if(a > 15 AND (b == 3 OR c != 4)) Allgemeine Java-Themen 3
G String nach Float parsen Allgemeine Java-Themen 2
P OutOfMemoryError beim XML erstellen bzw parsen, mehr RAM? Allgemeine Java-Themen 4
H2SO3- Exception beim date parsen des Jahres 00 Allgemeine Java-Themen 6
H2SO3- date mit pm and am parsen Allgemeine Java-Themen 3
Z Datum ohne Format-Kenntnisse parsen Allgemeine Java-Themen 5
T Wie kontinuierlichen asci input parsen? Allgemeine Java-Themen 3
C Java Quellcode parsen Allgemeine Java-Themen 8
alexpetri Date Parsen Allgemeine Java-Themen 3
G String parsen und Problem mit escaped zeichen Allgemeine Java-Themen 4
M Html parsen Allgemeine Java-Themen 2
D Parameter parsen? Allgemeine Java-Themen 15
V Datum parsen Allgemeine Java-Themen 6
MQue String parsen Allgemeine Java-Themen 11
M wie sinnvoll parsen ? Allgemeine Java-Themen 4
padde479 String in double parsen Allgemeine Java-Themen 6
W Package via Reflection parsen Allgemeine Java-Themen 4
M MP3 Datei selber parsen/werte auslesen Allgemeine Java-Themen 13
J parsen von verschiedenen dokument typen Allgemeine Java-Themen 3
B textzeile parsen Allgemeine Java-Themen 6
T Schlüsseldatei mit Umlauten parsen, aber wie. Allgemeine Java-Themen 6
G mail body parsen (->attachment & filename) Allgemeine Java-Themen 2
J DirectPlay Server-Antwort parsen Allgemeine Java-Themen 2
S String parsen Allgemeine Java-Themen 15
V LogFile parsen Allgemeine Java-Themen 5
E Field-Objekt in JTextField parsen Allgemeine Java-Themen 3
L Prozesse parsen ? Allgemeine Java-Themen 2
Ü Eurobeträge in möglichst wenig Scheine/Münzen zerlegen (2D-Arrays) Allgemeine Java-Themen 27
J Zerlegen einer Zahl Allgemeine Java-Themen 6
Neumi5694 Parser - Zerlegen verschachtelter Funktionen Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben