2016-07-26 1 views
1

私はウィッヒURLパスを取得し、このURLにリダイレクトし、簡単なコードを持っています、URLの有効なURLアドレスを確認するにはどうすればよいですか?

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)); 
     }           
    } 

例:http://web-server/SomeSystemindex.htmlを。有効なアドレスではありませんが、 、私のコードresultが真、wellFormedもtrueです!

どのようにURLアドレスを検証するのですか?

P.S.この場合、HelpUrl + path = http://web-server/SomeSystemindex.html HelpUrlが「http://web-server/SomeSystem」であり、パス= index.html

P.P.私はMartinが言うように - 接続を作成し、ステータスコードをチェックします。

HttpWebRequest req = WebRequest.Create(HelpURL + path) as HttpWebRequest; 
       req.UseDefaultCredentials = true; 
       req.PreAuthenticate = true; 
       req.Credentials = CredentialCache.DefaultCredentials; 

       var statusCode= ((HttpWebResponse)req.GetResponse()).StatusCode; 

       if (statusCode == HttpStatusCode.NotFound) 
        isValid = false; 
       else if (statusCode == HttpStatusCode.Gone) 
        isValid = false; 
       else 
       { 
        isValid = true; 
       } 
+1

あなたは "とはどういう意味ですかを有効ですか? 'http:// web-server/SomeSystemindex.html'は間違いなく有効なURIです。 –

+0

これは実際に有効なURLですか?あなたはどうやってそれが有効ではないと言っていますか? – Rahul

+0

@EliArbel、私はブラウザがこのURLにナビゲートできないことを意味します.. –

答えて

4

私が知る限り、アドレスが有効かどうかを判断する唯一の方法は、接続を開くことです。接続が有効な場合、アドレスは有効です。そうでない場合、接続は有効ではありません。悪いURLを除外するためのいくつかのトリックがありますが、アドレスが有効かどうかを知るためには、接続を開く必要があります。

例はすでにStackOverflowのhere

または、ここに掲載されています

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"); 
    } 

注:切断その後

出力でください:

200 
Error connecting 
+0

@Martin、はい、接続を確認するためのコードスニペットを与えることができます - 私はそれが有効な応答になると思う:) –

+1

あなたは簡単なコードサンプルをとにかく投稿する必要があります。 –

+0

十分に公正で、将来行うでしょう –

関連する問題