package test;
import java.sql.Date;
import java.text.SimpleDateFormat;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.apache.commons.httpclient.Cookie;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.cookie.CookiePolicy;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
public class test {
public static void main(String[] args) {
String data = null;
// 登陆 Url
String loginUrl = "https://efmudc.homewell.com.cn/efmweb/login";
// 需登陆后访问的 Url
String dataUrl = "https://efmudc.homewell.com.cn/efmweb/getInstantAlarmData";
HttpClient httpClient = new HttpClient();
// 模拟登陆,按实际服务器端要求选用 Post 或 Get 请求方式
PostMethod postMethod = new PostMethod(loginUrl);
// 设置登陆时要求的信息,用户名和密码
NameValuePair[] _data = { new NameValuePair("userName", "sxsyh"), new NameValuePair("password", "j+qVAmMf4ta4laR4dYc4odOHE7N8WY+cbHrD85S3J2ZZT4ddiHGdKoOHWzgGmTQSx/ul2Km2+8Ljz3BCoKihLL42iROyP60McU8qNMLo4IUyJwNyk5vouPe044+MuaYz33raardS14kAkPHE/V5PWrr9qprlTq1N5rqhWRoo1/zOOKaXYSmExo5PKPgEBg0XsWPiqN+eSlN0ulqhmsnSRKpMNy2Iaxh5fZQq3Cw0Xdl5Y2eBW8F0K3maS7V8BtaGe6u6WZRRn9ikYxYokE8F04s+WR4wmse6+le5RILMnoUIx/YIM9fwDPcymuz1FnuEl3SkOoVj+3B9QFD6lnPTGA=="), new NameValuePair("publicKeyVersion", "1"), new NameValuePair("isSaved", "false") };
postMethod.setRequestBody(_data);
try {
// 设置 HttpClient 接收 Cookie,用与浏览器一样的策略
httpClient.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);
int statusCode=httpClient.executeMethod(postMethod);
// 获得登陆后的 Cookie
Cookie[] cookies = httpClient.getState().getCookies();
StringBuffer tmpcookies = new StringBuffer();
for (Cookie c : cookies) {
tmpcookies.append(c.toString() + ";");
}
if(statusCode==200){//重定向到新的URL
// 进行登陆后的操作
GetMethod getMethod = new GetMethod(dataUrl);
// 每次访问需授权的网址时需带上前面的 cookie 作为通行证
getMethod.setRequestHeader("cookie", tmpcookies.toString());
// 你还可以通过 PostMethod/GetMethod 设置更多的请求后数据
// 例如,referer 从哪里来的,UA 像搜索引擎都会表名自己是谁,无良搜索引擎除外
postMethod.setRequestHeader("Referer", "http://passport.mop.com/");
postMethod.setRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36");
httpClient.executeMethod(getMethod);
// 打印出返回数据,检验一下是否成功
data = getMethod.getResponseBodyAsString();
}
}
catch (Exception e) {
e.printStackTrace();
}
JSONObject json = JSONObject.parseObject(data);
List _json = (List)json.get("data");
for (int i = 0; i < _json.size(); i++) {
Map _map = (Map)_json.get(i);
String orgId = String.valueOf(_map.get("orgId"));
String orgName = String.valueOf(_map.get("orgName"));
String nodeId = String.valueOf(_map.get("nodeId"));
String entityId = String.valueOf(_map.get("entityId"));
String entityName = String.valueOf(_map.get("entityName"));
String isConfirm = String.valueOf(_map.get("isConfirm"));
String rows = String.valueOf(_map.get("rows"));
JSONArray jsonArray = JSONArray.parseArray(rows);
String _lastAlarmTime = null;
String unitName = null;
String type = null;
String value = null;
String sensorNo = null;
String sensorName = null;
for (Iterator iterator = jsonArray.iterator();iterator.hasNext();) {
JSONObject jsonObject = (JSONObject) iterator.next();
unitName = jsonObject.get("unitName").toString();
type = jsonObject.get("type").toString();
value = jsonObject.get("value").toString();
sensorNo = jsonObject.get("sensorNo").toString();
sensorName = jsonObject.get("sensorName").toString();
long lastAlarmTime = new Long(_map.get("lastAlarmTime").toString());
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//这个是你要转成后的时间的格式
Date date = new Date(lastAlarmTime * 1000L);
_lastAlarmTime = sdf.format(date);
}
System.out.println("节点ID:"+nodeId+" 单位名称:"+
orgName+" 配电柜名称:"+
entityName+" 传感器名称:"+
sensorName+" 数据:"+
value+unitName+" 产生时间:"+
_lastAlarmTime);
}
}
}