2010-12-08 73 views
2

此問題可能有點過低,但我找不到答案。驗證Java網絡中的隨機URL

我正在輸入下一段,以便您可以糾正我/解釋我無意中提到的事情。 你知道在網絡瀏覽器中你可以從你自己的電腦輸入目錄路徑,它會帶來它?顯然,它也適用於本地網絡中的頁面。如果在同一子網中有另一個頁面,則可以使用「http:// pagename /」訪問它。

在網絡中,我是其中的一部分,這些頁面很多,並且它們都(或大部分)都具有常見的單字名稱,例如「http:// word /」。我想用Java來測試一個常用詞的字典來查看網絡上存在哪些位置。當然,如果我知道網絡上的IP地址範圍,我可能會有一個更簡單的方法。但是,如果我嘗試在地址欄中輸入「http:// word /」(我從ping獲得的IP地址),則會出現「找不到頁面」頁面。即使「http:// word /」有效,情況也是如此。

所以說我循環通過我的銀行。我如何測試URL是否真實? 我已經制定了如何加載我的銀行。這是我現在所擁有的

URL article=new URL("http://word"); //sample URL 
URLConnection myConn=article.openConnection(); 
Scanner myScan=new Scanner(new InputStreamReader(myConn.getInputStream())); 
    System.out.println(myScan.hasNext()); //Diagnostic output 

這適用於使用有效URL構造URL的情況。當它通過一個錯誤的URL時,該程序只是忽略了System.out.println,甚至沒有制定新的路線。我知道不同的瀏覽器顯示不同的「頁面未找到」屏幕,並且這些瀏覽器擁有自己的html源代碼。也許這與我的問題有關?

如何使用此方法測試URL是否真實? 有沒有一種方法來測試它與IP地址,給我的問題?或者,爲什麼我在輸入IP地址而不是URL時遇到問題?

回答

3

您應該檢查HTTP響應代碼。如果URL是「真實的」(用你的話來說),響應代碼應該是200.否則我相信你會得到其他的響應代碼。

使用HttpUrlConnection.getResponseCode();

HttpUrlConnection是URLConnection的子類。當你連接的HTTP實際上是你從openConnection()得到的,所以你可以這樣說:

URL article = new URL(「http:// word」); //示例URL HttpURLConnection myConn =(HttpURLConnection)article.openConnection();

0

如果您正在測試只的HTTP URL,就可以把URLConnection的一個HttpURLConnection類,並檢查HTTP響應代碼爲200 = HTTP_OK:

URL article=new URL("http://word"); //sample URL 
HttpURLConnection myConn= (HttpURLConnection)article.openConnection(); 
if (myConn.getResponseCode() == HttpURLConnection.HTTP_OK) { 
    // Site exists and has valid content 
} 

此外,如果你想測試的IP地址,你麪包車簡單地使用它作爲網址: http://10.0.0.1

0

我想我已經想通了。

如果沒有我捕捉到IOException(因爲URL,URLConnection和Scanner),這段代碼就不能編譯,所以我不得不try{/*code*/} catch(IOException oops){},我什麼也沒做。我認爲把try/catch放在我的問題中並不重要。 UnknownHostException和MalformedURLException擴展IOException,所以我已經不知不覺地用Scanner.hasNext()HttpURLConnection.getResponseCode()觸發其中的一個,捕獲它並退出try塊。因此,當我的網址不正確時,我從來沒有收到過響應代碼。所以我需要寫

 try 
       { 
        URL article=new URL("http://word"); 
        HttpURLConnection myConn=(HttpURLConnection)article.openConnection(); 
        //code to store "http://word" as a working URL 
       } 
     catch (UnknownHostException ex) {/*code if "http://word" is not a working URL*/} 
     catch (IOException oops) {oops.printStackTrace();} 

感謝大家的幫助,我學到了很多。如果你有不同的/更好的答案,或者如果你能回答爲什麼使用IP地址不起作用,我仍然在想。