1 /**
2 * 获取httpclient的请求url地址
3 */
4 public static String getUrl(){
5 String url = "http://"+map.get("server")+":"+map.get("server_port")+map.get("heartbeat_path");
6 System.out.println(url);
7 StringBuilder params = new StringBuilder(StringUtils.EMPTY);
8 for (String key : map.keySet()) {
9 if("timestamp".equals(key)){
10 try {
11 params=params.append(key).append("=").append(URLEncoder.encode(map.get(key).toString(), "UTF-8")).append("&");
12 } catch (UnsupportedEncodingException e) {
13 e.printStackTrace();
14 }
15 }else if("heartbeat_path".equals(key)){
16 try {
17 params=params.append(key).append("=").append(URLEncoder.encode(map.get(key).toString(), "utf-8")).append("&");
18 } catch (UnsupportedEncodingException e) {
19 e.printStackTrace();
20 }
21 }else if("cmd".equalsIgnoreCase(key)){
22 boolean isEndError=map.get(key).toString().endsWith("error!!!");
23 if("mac error!!!".equalsIgnoreCase(map.get(key).toString())||isEndError){
24 params = params.append(key).append("=").append("")
25 .append("&");
26 }else{
27 params = params.append(key).append("=").append(map.get(key))
28 .append("&");
29 }
30 }else{
31 params = params.append(key).append("=").append(map.get(key))
32 .append("&");
33 }
34 }
35 if (!"".equals(params)) {
36 url = url + "?" + params.toString();
37 }
38 url = url.substring(0, url.length() - 1);
39 return url;
40 }
41
42 /**
43 * 发送httpclient请求,并根据服务器端的返回数据更新设备状态
44 */
45 public static void httpGet(String url) {
46 //记录当前状态
47 HashMap<String, Object> temp=new HashMap<String,Object>();
48 for(Iterator it = map.keySet().iterator() ; it.hasNext();){
49 String key = it.next().toString();
50 temp.put(key, map.get(key));
51 }
52 Helper.mapSession=temp;
53 CloseableHttpClient httpClient = HttpClients.createDefault();
54 RequestConfig requestConfig = RequestConfig.custom()
55 .setSocketTimeout(20000).setConnectTimeout(20000).build();
56 HttpGet httpget = new HttpGet(url);
57 httpget.addHeader("Accept", "*/*");
58 httpget.addHeader("Connection", "keep-alive");
59 httpget.addHeader("Accept-Encoding", "gzip, deflate");
60 CloseableHttpResponse response;
61 try {
62 response = httpClient.execute(httpget);
63 HttpEntity entity = response.getEntity();
64 System.out.println(response.getStatusLine());
65 if (entity != null) {
66 String params=EntityUtils.toString(entity);
67 String[] paramsAry=params.split("\\|");
68 if(paramsAry.length==4){
69
70 map.put("status", paramsAry[3]);
71 String[] cmdAry=paramsAry[2].split("@@");
72 System.out.println("response={"+params+"}");
73 map.put("rt", "");
74 if(!"".equals(cmdAry[0].trim())&&cmdAry[0]!=null){
75 if(cmdAry[0].endsWith("error!!!")){
76 map.put("cmd", "");
77 map.put("status", 0);
78 Helper.flag=false;//没有指令的情况
79 return;
80 }
81 reciveTime=new Date().getTime();
82 //map.put("timestamp", new Date());
83 if(!("".equals(cmdAry[0])||null==cmdAry[0])){
84 Helper.flag=true;//有指令的情况
85 }
86 map.put("cmd", cmdAry[0]);
87
88 if(cmdAry.length>1){
89 for(int i=1;i<cmdAry.length;i++){
90 String[] param=cmdAry[i].split("=");
91 if("sensor_indoor_temp".equalsIgnoreCase(param[0])){
92 double indoorTemp=Double.parseDouble(map.get("indoor_temp").toString());
93 double value=Double.parseDouble(param[1]);
94 map.put("indoor_temp", indoorTemp+value);
95 }else if("sensor_outdoor_temp".equalsIgnoreCase(param[0])){
96 double indoorTemp=Double.parseDouble(map.get("outdoor_temp").toString());
97 double value=Double.parseDouble(param[1]);
98 map.put("outdoor_temp", indoorTemp+value);
99 }
100 map.put(param[0], param[1]);
101 }
102 return;
103 }
104 }else{
105 map.put("cmd", "");
106 map.put("status", 0);
107 Helper.flag=false;//没有指令的情况
108 }
109 }else{
110 System.out.println("response={"+params+"}");
111 }
112
113 }
114 response.close();
115 httpClient.close();
116 } catch (IOException e) {
117 Helper.startProgram=false;
118 Helper.flag=false;
119 runDeviceSimulator();
120 //e.printStackTrace();
121 }
122 }