package org.infosec.ismp.sitecheck; import java.io.IOException; import java.net.InetAddress; import java.net.UnknownHostException; import java.util.HashMap; import java.util.Map; import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.HttpException; import org.apache.commons.httpclient.HttpStatus; import org.apache.commons.httpclient.methods.GetMethod; import org.apache.commons.httpclient.params.HttpMethodParams; import org.htmlparser.Parser; import org.htmlparser.util.ParserException; import org.infosec.ismp.model.poller.PollStatus; import org.infosec.ismp.model.poller.ServiceMonitor; import org.infosec.ismp.poller.monitor.http.HttpMonitor; public class HttpSiteMonitor { private String m_ipAddr; private String statusCode; public String getStatusCode() { return statusCode; } public void setStatusCode(String statusCode) { this.statusCode = statusCode; } public long getResponseTime() { return responseTime; } public void setResponseTime(long responseTime) { this.responseTime = responseTime; } private long responseTime=-1; public String getIpAddr() { return m_ipAddr; } public void setIpAddr(String ipAddr) { m_ipAddr = ipAddr; } public HttpSiteMonitor(String ipAddr){ m_ipAddr=ipAddr; } public void httpOnline() throws HttpException, IOException { /* 1 生成 HttpClinet 对象并设置参数*/ HttpClient httpClient=new HttpClient(); //设置 Http 连接超时为5秒 httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(5000); /*2 生成 GetMethod 对象并设置参数*/ GetMethod getMethod=new GetMethod(m_ipAddr); //设置 get 请求超时为 5 秒 getMethod.getParams().setParameter(HttpMethodParams.SO_TIMEOUT,5000); //设置请求重试处理,用的是默认的重试处理:请求三次 getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler()); /*3 执行 HTTP GET 请求*/ long startTime=System.currentTimeMillis(); if(HttpStatus.SC_OK==httpClient.executeMethod(getMethod)){ statusCode="Up"; responseTime=System.currentTimeMillis()-startTime; }else { statusCode="Down"; responseTime=-1; } /*6 .释放连接*/ getMethod.releaseConnection(); } }