Struts2_HttpClient检测某url连接状态

检测某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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值