# String to URL



## noisebreath (6. Apr 2009)

Hi 

wie kann ich 1. einen String in eine Url Variable speichern und 2. überprüfen dass der String auch eine URL ist?

lg noise


----------



## faetzminator (6. Apr 2009)

was für ein Protokoll?
- für HTTP(S) findet du Hilfe bei Validating URL Links and Reusing Exceptions (google.com -> "java check url")
- für file://... einfach new File(String).exists()


----------



## Ebenius (6. Apr 2009)

Erstens mit _new URL(theString);_ und zweitens wird automatisch bei erstens geprüft (keine MalformedURLException ^= richtig formatierte URL). Oder willst Du überprüfen, ob die Resource per URL auch verfügbar ist?



faetzminator hat gesagt.:


> was für ein Protokoll?
> - für HTTP(S) findet du Hilfe bei Validating URL Links and Reusing Exceptions (google.com -> "java check url")
> - für file://... einfach new File(String).exists()


Warum sollte man das pro Protokoll selbst implementieren?

Ebenius


----------



## L-ectron-X (6. Apr 2009)

[HIGHLIGHT="Java"]String str = "http://www.java-forum.org";
try {
   URL url = new URL(str);
}
catch(MalformedURLException e) {
   e.printStackTrace();
}[/HIGHLIGHT]
Wenn der URL bspw. ein unbekanntes Protokoll verwendet, wird eine MalformedURLException geworfen.


----------



## noisebreath (6. Apr 2009)

ja das habe ich genauso gemacht. dachte es gibt vielleicht ne funtkion und ich muss es nicht übern konstruktor machen, aber passt ja auch.
stimmt schon der error wird abgefangen aber eine Möglichkeit des autocomplete habe ich nicht oder? also falls ich einen pfad eingebe dass er mir automatisch daraus eine url macht wenn er kann

zb 

c:....

er macht draus file:/c:..


----------



## tfa (6. Apr 2009)

Entweder File.toURI().toURL() oder (falls Datei über einen Classloader ladbar) Class.getResource().


----------



## faetzminator (6. Apr 2009)

Ebenius hat gesagt.:


> Warum sollte man das pro Protokoll selbst implementieren?



Wenn du z.B. eine HTTP URL überprüfen willst, ist es naheliegend zu schauen, ob die Page existiert (zumindest kein 404er oder so)


----------



## Der Müde Joe (6. Apr 2009)

>Wenn du z.B. eine HTTP URL überprüfen willst

naja....URL ist so zimlich eine schlechte Klasse dafür. equals ist schlecht....

man sollte URI benutzen



> Since hosts comparison requires name resolution, this operation is a blocking operation.


----------



## Ebenius (6. Apr 2009)

faetzminator hat gesagt.:


> Wenn du z.B. eine HTTP URL überprüfen willst, ist es naheliegend zu schauen, ob die Page existiert (zumindest kein 404er oder so)


... dann kann ich mir eine Connection aus der URL holen. Genauso auch bei File-URLs. Deswegen meinte ich, dass es nicht günstig ist, das pro Protokoll einzeln zu machen. Das geht ja auch generisch.



Der Müde Joe hat gesagt.:


> naja....URL ist so zimlich eine schlechte Klasse dafür. equals ist schlecht....


Das Wörtchen "dafür" markiert genau das Problem. Wofür denn? Wenn ich Resourcen auflisten will, ist URI (Uniform Resource Identifier) die richtige Wahl. Wenn ich auf Resourcen zugreifen will, dann ist der URL (Uniform Resource Locator) das richtige.

Ebenius


----------

