package sample.tools;
import java.io.*;
import java.net.*;
/**
* 指定したURLにHTTPでアクセスできるかどうかをチェックする、
* コマンドライン・アプリケーションです。
* 主にWebアプリケーションのトップページURLに対して使い、
* そのWebアプリケーションサーバが応答するかどうかを確認するために使います。
*/
public class URLAccessChecker {
/* URLからコンテンツを読むときのエンコーディング。現在はシフトJISのみ対応 */
private static final String encoding = "Shift_JIS";
/**
* 指定されたURLに接続できるかチェックします。
* @param urlstr チェックするURL
* @return 接続できたら真、そうでなければ偽
*/
private static boolean check(String urlstr) {
URL url;
try {
url = new URL(urlstr);
} catch (MalformedURLException ex) {
System.out.println("cannot access to " + urlstr + ":\n" + ex.toString());
ex.printStackTrace();
return false;
}
try {
BufferedReader reader =
new BufferedReader(new InputStreamReader(url.openStream(), encoding));
int len = 0;
while (true) {
String buf = reader.readLine();
if (buf == null)
break;
len += buf.length();
}
reader.close();
System.out.println("read (" + len + " bytes).");
} catch (IOException ex2) {
System.out.println("cannot read stream from " + urlstr + ":\n" + ex2.toString());
ex2.printStackTrace();
return false;
}
return true;
}
/**
* コマンドラインアプリケーションのメイン
* @param args 引数。1個だけ持つことを想定し、[0]は接続できるかどうかをチェックするURLです。
*/
public static void main(String[] args) {
if (args.length != 1) {
System.err.println("usage: URLAccessChecker URL");
System.exit(1);
}
String url = args[0];
boolean result = URLAccessChecker.check(url);
if(result){
System.out.println("We can access the URL " + url + ".");
} else {
System.out.println("URL " + url + " is down.");
System.exit(2);
}
}
}
|