2013-03-06 87 views
1

需要製作一個程序,該程序需要一個類似www.stackoverflow.com/questions的網頁的有效URL及其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 = new PageImplementation(); 
Result result = page.check ("http://www.stackoverflow.com:60"); 
if (result.ok()) { ... } 
else { ... } 

返回的對象是Result的一個實例,當狀態碼爲200 OK時,「ok」方法應該返回true,否則返回false。方法「msg」應該返回狀態碼作爲字符串。

回答

2

查看JDK中的HttpURLConnection類或使用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. 
+0

我試過這種方法,但是我希望能夠進入網址或沒有「http://」,這可能嗎? – 2013-03-06 16:58:44

+0

難道你不能在你的代碼中檢查它嗎? – laz 2013-03-06 18:46:41

+0

我該如何預先安排?我在python import中找到了一種名爲httplib的方法,但不幸的是,它只適用於Python。是否有類似的Java導入?我想要一種方法來檢查代碼的狀態,不管是否需要「http://」。 – 2013-03-06 21:07:05

1

你可以使用一些API像公地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 
}