2012-03-04 50 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)连接超时。否则,代码可能会挂起很长时间,等待无响应的服务器回复。

相关问题