002
16.12.2005, 22:08 Uhr
~Prince
Gast
|
Hoffe ihr ignoriert mich nur weil ihr selbst keine Antwort habt oder euch keine Gedanken machen möchtet ???
Habe mir aber weiter Gedanken gemacht. Sagt ihr mir bitte ob meine Lösung richtig ist oder ob man das so nicht ausdrücken kann?
Code: |
import java.net.*; public class u { public static void main( String[] args ) throws Exception{ String sBase = "http://www.Host.Base:-1/verz1/verz2/datei"; System.out.println(sCombine(sBase, "ftp:/???/www.Host.Link")); System.out.println(sCombine(sBase, "http:/???/www.Host.Link")); System.out.println(sCombine(sBase, "../Datei.Link(..)")); System.out.println(sCombine(sBase, "./Datei.Link(.)")); System.out.println(sCombine(sBase, "/Datei.Link()")); System.out.println(sCombine(sBase, "Datei.Link()") + "\n"); System.out.println(sCombine(sBase, "www.Host.Link")); // Der Problemfall !!! System.out.println(sCombine(sBase, "www.Host.Link/")); // Der Problemfall !!! System.out.println(sCombine(sBase, "www.Host.Link/Datei.Link")); // Der Problemfall !!!
} public static URL sCombine(String sBase, String sLink){ URL uBase = null; // Basis-URL String sProtokoll; String sHost; int iPort; String sFile; URL uLink = null; // Link-URL int iErr = 0; // Fehler? try{ // Base-URL erzeugen uBase = new URL(sBase); } catch(MalformedURLException e){ return null; // Fehler aufgetreten } do{ try{ if(iErr == 0){ // Link-URL erzeugen (Absolute) if(sLink.length() > 3) // länger als 3 Zeichen? if(sLink.substring(0, 4).equals("www.")) // fängt das erste Verz. fängt mit www. an? /* Ja! Es ist also eine Domain ohne Protokoll-Angabe. * Da das erste Verzeichniss nicht mit www. beginnen darf, * weil es dann als eine Domain verstanden wird. */ sLink = uBase.getProtocol() + "://" + sLink; uLink = new URL(sLink); } if(iErr == 1){ // Link-URL erzeugen (Relative) uLink = new URL(uBase, sLink); } } catch(MalformedURLException e){ iErr++; // Fehler aufgetreten } finally{ if(uLink != null) iErr = 0; } }while(iErr != 0); return uLink; } }
|
|