检测某url连接状态:
/**
* @author lwj
* @date 2019年10月9日 下午4:39:41
* @param url= baidu.com
* @return success:ip+端口 是否请求成功,status:检测地址连接状态 ,length:返回内容长度
* 返回数据:{"lenght":81,"success":true,"status":{"protocolVersion":{"major":1,"minor":1,"protocol":"HTTP"},"reasonPhrase":"OK","statusCode":200}}
*/
public String doCheckUrlForGet() {
//连接超时时间
int timeOut = 3000;
//获取超时时间(可根据参数设置超时时间 默认3秒)
String to = request.getParameter("timeOut");
if (StringUtil.notEmpty(to)) {
timeOut = Integer.parseInt(to);
}
//返回时map
Map<String,Object> map = new HashMap<String,Object>();
//String url = "http://localhost:7080/stxsbh/manage2011/login_login.action";
//获取url
String url = request.getParameter("url");
if (StringUtil.notEmpty(url)) {
//前端解码
url=URLDecoder.decode(url);
// 获得Http客户端(可以理解为:你得先有一个浏览器;注意:实际上HttpClient与浏览器是不一样的)
CloseableHttpClient httpClient = HttpClientBuilder.create().build();
// 创建Get请求
HttpGet httpGet = new HttpGet(url);
HttpPost httpPost = new HttpPost(url);
// 响应模型
CloseableHttpResponse response = null;
try {
// 配置信息
RequestConfig requestConfig = RequestConfig.custom()
// 设置连接超时时间(单位毫秒)
.setConnectTimeout(timeOut)
// 设置请求超时时间(单位毫秒)
.setConnectionRequestTimeout(timeOut)
// socket读写超时时间(单位毫秒)
.setSocketTimeout(timeOut)
// 设置是否允许重定向(默认为true)
.setRedirectsEnabled(true).build();
// 将上面的配置信息 运用到这个Get请求里
httpGet.setConfig(requestConfig);
// 由客户端执行(发送)Get请求
response = httpClient.execute(httpGet);
// 从响应模型中获取响应实体
HttpEntity responseEntity = response.getEntity();
map.put("status", response.getStatusLine());
logger.info("响应状态为:" + response.getStatusLine());
if (responseEntity != null) {
map.put("lenght", responseEntity.getContentLength());
//map.put("context",URLEncoder.encode(EntityUtils.toString(responseEntity, StandardCharsets.UTF_8)) );
}
map.put("success", true);
} catch (Exception e) {
map.put("success", false);
map.put("exception", "连接失败,请检查ip+端口,错误信息:" + e.getMessage());
} finally {
try {
// 释放资源
if (httpClient != null) {
httpClient.close();
}
if (response != null) {
response.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}else{
map.put("success", false);
map.put("message", "请添加正确的url参数值");
}
Struts2Utils.renderJson(JSON.toJSONString(map));
return null;
}