# URL überprüfen



## p3lotud0 (3. Apr 2008)

Hi,

ich möchte beliebige URLs nach ihren Gültigkeiten überprüfen, was ich beim von mir angegebenen Beispiel über getContent() mache. Würde mich jetzt gerne über Feedback freuen, ob das so sinnvoll ist, es besser ginge oder wie ich mögliche Probleme aus dem Weg gehe, die da wären:

z.B. bei falschem Port gibt es ein Timeout, was aber schon echt sehr sehr lange dauert. Ist das irgendwie einschränkbar. Wüsste nicht, wie ich das mit meinen "Möglichkeiten" setzen könnte.
Dann wirft er eine Exception, wenn er z.B. auf ein JavaApplet trifft, was ja trotzdem die Gültigkeit der URL beweist (daher diese Exceptionabfrage im catch und nicht ein generelles flag auf true setzen) und ich daher Zweifel bekomme, ob ich das wirklich mit getContent() alles testen soll.

Hier mal mein (unbeholfener) Code:


```
public static boolean testConnection(String host, int port){
		
		boolean flag = false; // true: ungueltige URL
		
		URL urlToCheck = null;
		String formattedUrl = host + ":"+port;
		
                if(!formattedUrl.startsWith("http://")) formattedUrl = "http://"+formattedUrl;
                
		try {
			urlToCheck = new URL(formattedUrl);
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			flag = true;
		}
		
		try {
			urlToCheck.getContent();
		} catch (IOException e) {
			
                        // Exception fuer z.B. Timeout bei falschem Port
			if(e.getClass().getSimpleName().equals("ConnectException")) flag = true;
			
                        // Exception fuer falschen Host
                        if(e.getClass().getSimpleName().equals("UnknownHostException")) flag = true;

			e.printStackTrace();
		}
		
		return !flag;
	}
```

Danke schon mal für eure Anregungen


----------



## HoaX (4. Apr 2008)

definiere gültig. muss sie logisch sein? muss sie erreichbar sein? bestimmte protokolle? einschränkungen? ....


----------



## p3lotud0 (4. Apr 2008)

Ja, ich gebe zu, das "gültig" war sch... ausgedrückt. Ich meinte, dass Sie zur Zeit der Überprüfung erreichbar sein sollte.
Einschränkungen... weiss ich nicht genau, was du damit meinst, aber wie zB. beim falschen Port nicht so lange für die Rückgabe eines Timeouts brauchen. Über Protokolle habe ich mir noch keine Gedanken gemacht... Dürfte halt keine Probleme damit haben, wenn er z.B. auf ein JavaApplet trifft. Bei getContent() wie ich es gemacht habe, wirft er ja ne Exception, was natürlich nichts darüber aussagt, ob die Adresse jetzt erreichbar ist oder nicht. Deswegen fand ich meinen Ansatz auch nicht wirklich gelungen...


----------



## Pappenheimer++ (4. Apr 2008)

Du willst also wissen, ob dein HTTP-GET was zurückliefert, ja? Dann frag ich mich, was da dein Problem von wegen "falscher Port" sein soll? Ein normaler Webserver lauscht auf 80 und wenn da nichts kommt, kannst du die URL eben abschreiben.


----------



## p3lotud0 (6. Apr 2008)

Wie schaut es dann z.B. mit nem VNC aus, dass wie oben geschrieben ein Java-Applet als Interface besitzt. Das wäre zB.  5800. Will also nicht nur Port 80 haben. Wenn ich wie im ersten Satz dann zB. Port 5801 statt 5800 angebe, bekomme ich ein Timeout.


----------

