2012-03-04 49 views
3

簡單地看看是否可以連接到網站/服務器的正確方法是什麼?我想要一個我正在編碼的應用程序,它只會在我的網站脫機時提醒我。正確的方法來測試服務器是否在Java中?

謝謝!

+0

它是一個獨立的或Web應用程序? – Jayy 2012-03-04 06:06:05

+0

@KaipaMSarma事實上,這將在我的Android應用程序中,但我不確定這是相關的,所以我沒有包括它。 – DannyF247 2012-03-04 06:08:48

+0

我還添加了andriod標籤,以便那些已經在andriod上工作的人可以查看此問題 – Jayy 2012-03-04 06:18:22

回答

3

您可以使用HttpURLConnection發送請求並檢查響應正文中是否爲該頁面唯一的文本(而不僅僅是檢查是否有響應,以防錯誤或維護頁面或某事正在服務)。

Apache Commons有一個庫,去掉了很多在Java中HTTP請求的鍋爐板。

我從來沒有在Android上專門做過這樣的事情,但是如果它有什麼不同,我會很驚訝。

這裏有一個簡單的例子:

URL url = new URL(URL_TO_APPLICATION); 
HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 
InputStream stream = connection.getInputStream(); 
Scanner scanner = new Scanner(stream); // You can read the stream however you want. Scanner was just an easy example 
boolean found = false; 
while(scanner.hasNext()) { 
    String next = scanner.next(); 
    if(TOKEN.equals(next)) { 
     found = true; 
     break; 
    } 
} 

if(found) { 
    doSomethingAwesome(); 
} else { 
    throw aFit(); 
} 
+0

與第一位有混淆,因爲它不是相對的xD無論如何,我會嘗試一個HttpConnection。有沒有更好的方法來查看是否可以建立連接,而不必檢查特定文本的頁面? – DannyF247 2012-03-04 06:21:54

+0

對不起,刪除了令人困惑的部分。至於檢查是否可以建立連接,'connection.getInputStream()'會在無法建立連接時拋出IOException。所以如果你只對能夠連接感興趣,你可以在那裏停下來。但是,如果你想確保正確的頁面正在服務,你可以像我在這個例子中那樣閱讀正文。 – Joel 2012-03-04 06:54:03

1

你也想設置使用setConnectTimeout(int timeout)setReadTimeout(int timeout)連接超時。否則,代碼可能會掛起很長時間,等待無響應的服務器回覆。

相關問題