1

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

这是我到目前为止所做的:

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这样的页面,我将创建一个 Page 实例,然后执行以下操作:

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

返回的对象是 Result 的一个实例,当状态码为 200 OK 时“ok”方法应该返回 true,否则返回 false。方法“msg”应该将状态码作为字符串返回。

4

2 回答 2

2

查看HttpURLConnectionJDK 中的类或使用Apache Http Components

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

HttpURLConnection可能看起来像这样:

URL url = new URL("http://www.stackoverflow.com");
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
connection.connect();

int httpStatusCode = connection.getResponseCode(); //200, 404 etc.
于 2013-03-06T16:23:26.663 回答
1

您可以使用一些 api,例如 commons http ,

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
}
于 2013-03-06T16:25:35.190 回答