2015-05-09 81 views
1

通过使用HtmlUnit浏览器,我得到HTTP标准响应代码。根据响应代码,我们正在决定服务器是否正在运行,以控制另一个线程。HtmlUnit - 服务器关闭后服务器(HTTP)状态代码不变

问题我们在这里面临的是,如果我们停止服务器,仍然会得到200(运行)响应代码。

该网站的索引文件是一个纯HTML文件,所以我们通过清除Cookie和Cache来尝试。但即使在关闭服务器之后,我们仍然将响应代码设置为200。请指导,以找到一种方法来跟踪时,正在运行的服务器成为关/不回应(HttpHostConnectException)

代码的HtmlUnit:

while(alive) 
{ 
    try 
    { 
    c.clear(); 
    cm.clearCookies(); 
    SST = client.getPage("http://**ip**/DDT/").getWebResponse().getStatusCode(); 
    } 
    catch(HttpHostConnectException he) 
    { 
     isServerUP = false; 
    } 
    catch(FailingHttpStatusCodeException fhe) 
    { 
     isServerUP = false; 
    } 
    System.out.println(SST); 
    if(SST == 200) 
    { 
     isServerUP = true; 
    } 
    else 
    { 
     isServerUP = false; 
    } 
} 

回答

1

我无法重现,可能是Web客户端是不同的配置。

随着最新版本,下面的成功处理停止/启动服务器:

try (WebClient webClient = new WebClient()) { 
    while (true) { 
     try { 
      int status = webClient.getPage("http://localhost/test.html").getWebResponse().getStatusCode(); 
      System.out.println(new Date() + " " + status); 
     } 
     catch(Exception e) { 
      System.out.println(e.getMessage()); 
     } 
     Thread.sleep(1000); 
    } 
} 
+0

谢谢艾哈迈德。我在循环中移动了声明和关闭的WebClient,因此它现在正在工作。我不知道我们是否有更好的方法来解决这个问题。我已经提到了下面的代码。 while(alive) { WebClient client = new Webclient //代码 client.close(); } –

+1

你可以有while(true){try {new WebClient().. close()}},所以每次在循环中构建一个新的webclient并关闭()。你还有问题吗?如果不是,请接受答案。 –

+0

谢谢艾哈迈德 –