关于java:检查网页的状态

Checking the status of a web page

本问题已经有最佳答案,请猛点这里访问。

需要制作一个程序,该程序使用一个有效的网页URL,如www.stackoverflow.com/questions及其等效的IP地址。然后程序将找到该网页并将该网页的状态代码返回给我们,例如200 OK和404 Not Found。如果无法访问网页,则应返回一条说明情况的消息。

以下是我迄今为止所做的工作:

1
2
3
4
5
6
7
interface Result {
  public boolean ok ();
  public String message (); }

class Page {
  public Result check ( String wholeURL ) throws Exception {
     throw new Exception ("Not sure about the rest"); } }

另外,如果我要检查一个页面,如http://www.stackoverflow.com,我将创建一个页面实例,然后执行如下操作:

1
2
3
4
Page page = new PageImplementation ();
Result result = page.check ("http://www.stackoverflow.com:60" );
if ( result.ok () ) { ... }
else { ... }

返回的对象是一个结果实例,当状态代码为200OK时,"OK"方法应该返回true,否则返回false。方法"msg"应以字符串形式返回状态代码。


看看JDK中的HttpURLConnection类,或者使用ApacheHTTP组件。

基本上,您尝试连接到URL并检查响应头,或者在根本无法访问服务器时等待超时。

使用HttpURLConnection时,可能如下所示:

1
2
3
4
5
URL url = new URL("http://www.stackoverflow.com");
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
connection.connect();

int httpStatusCode = connection.getResponseCode(); //200, 404 etc.


您可以使用一些API,如Commons HTTP,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import org.apache.commons.httpclient.*;
import org.apache.commons.httpclient.methods.*;
import org.apache.commons.httpclient.params.HttpMethodParams;

..........


public Result check ( String fullURL ) throws Exception {

  HttpClient client = new HttpClient();
  GetMethod method = new GetMethod(url);

  int statusCode = client.executeMethod(method);

   //Update your result object based on statuscode
}