2016-07-26 9 views
1

Ich habe einfachen Code, weichen URL-Pfad erhalten und auf diese URL umleiten:Wie überprüfe ich die gültige URL-Adresse?

private void Redirect(String path) 
    { 

     Uri validatedUri = null; 
     var result = Uri.TryCreate(HelpURL + path, UriKind.Absolute, out validatedUri); 
     if (result&&validatedUri!=null) 
     { 
      var wellFormed = Uri.IsWellFormedUriString(HelpURL + path, UriKind.Absolute); 
      if(wellFormed) 
      { 
       Response.Write("Redirect to: " + HelpURL + path); 
       Response.AddHeader("REFRESH", "1;URL=" + HelpURL + path); 
      } 
      else //error 
      { 
       Response.Write(String.Format("Validation Uri error!", path)); 
      } 

     } 
     else 
     { 
Response.Write(String.Format("Validation Uri error!", path)); 
     }           
    } 

Beispiel Url: http://web-server/SomeSystemindex.html. Es ist keine gültige Adresse, aber: bei meinem Code result ist wahr, wellFormed ist auch wahr!

So validieren Sie die URL-Adresse?

P.S. HelpUrl + path = http://web-server/SomeSystemindex.html für diesen Fall. Wo HelpUrl '' ist und Pfad = index.html

P.P.S. Ich mache, wie Martin sagt - erstelle eine Verbindung und überprüfe den Statuscode.

+1

Was Sie von 'bedeuten gültig'? "http: // web-server/SomeSystemindex.html" ist definitiv ein gültiger URI. –

+0

Dies ist in der Tat eine gültige URL? Wie sagst du, dass es nicht gültig ist? – Rahul

+0

@EliArbel, ich meine, dass der Browser nicht zu dieser URL navigieren kann. –

Antwort

4

Soweit ich weiß, ist die einzige Möglichkeit festzustellen, ob eine Adresse gültig ist oder nicht, indem eine Verbindung geöffnet wird. Wenn die Verbindung besteht, ist die Adresse gültig. Wenn nicht, ist die Verbindung nicht gültig. Es gibt einige Tricks, um schlechte URLs herauszufiltern, aber um zu wissen, ob eine Adresse gültig ist, müssen Sie eine Verbindung öffnen.

URL url; 
    URL wrongUrl; 
    try { 
     url = new URL("http://google.com"); 
     wrongUrl = new URL("http://notavalidurlihope.com"); 
     HttpURLConnection con = (HttpURLConnection) url.openConnection(); 
     System.out.println(con.getResponseCode()); 
     HttpURLConnection con2 = (HttpURLConnection) wrongUrl.openConnection(); 
     System.out.println(con2.getResponseCode()); 
    } catch (IOException e) { 
     System.out.println("Error connecting"); 
    } 

Hinweis:

hat ein Beispiel bereits auf Stackoverflow here

Oder hier gepostet

Ausgang trennen danach tun:

200 
Error connecting 
+0

@Martin, ja, wenn Sie Code-Snippet geben können, um die Verbindung zu überprüfen - ich denke, es wird eine gültige Antwort sein :) –

+1

Sie sollten trotzdem ein kurzes Codebeispiel posten, da das * eigentlich * die Frage beantworten würde. –

+0

Fair genug, wird in der Zukunft tun –