MtPlanDataLoadThread.java
5.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
package com.bsth.data.maintenance_plan;
import com.bsth.data.SystemParamCache;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.http.HttpEntity;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.joda.time.DateTime;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import javax.net.ssl.*;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.List;
import java.util.Map;
/**
* 维修保养计划
* @author Hill
*/
//@Component
public class MtPlanDataLoadThread extends Thread implements InitializingBean {
private Logger logger = LoggerFactory.getLogger(this.getClass());
private String url = SystemParamCache.getUrlHttpMaintenance();
private CloseableHttpClient httpClient;
private RequestConfig requestConfig;
private CloseableHttpResponse response;
private HttpEntity entity;
private BufferedReader br;
private final static String HTTPS = "https://";
private SSLConnectionSocketFactory sslConnectionSocketFactory;
@Autowired
private ObjectMapper objectMapper;
public CloseableHttpClient defaultHttpClient(String url) {
if (url.startsWith(HTTPS)) {
return HttpClients.custom().setSSLSocketFactory(sslConnectionSocketFactory).build();
}
return HttpClients.createDefault();
}
@Override
public void run() {
logger.warn("维修保养计划获取数据开始");
List<MaintenancePlan> list;
StringBuilder sb = new StringBuilder(url);
try {
HttpGet get = new HttpGet(sb.append("?date=").append(new DateTime().toString("yyyy-MM-dd")).toString());
get.setConfig(requestConfig);
response = httpClient.execute(get);
int statusCode = response.getStatusLine().getStatusCode();
if(statusCode != 200){
logger.error("http client status code: " + statusCode);
}
entity = response.getEntity();
if (null != entity) {
br = new BufferedReader(new InputStreamReader(entity.getContent()));
StringBuffer stringBuffer = new StringBuffer();
String str = "";
while ((str = br.readLine()) != null) {
stringBuffer.append(str);
}
//stringBuffer = new StringBuffer("{\"result\": [{\"gsmc\": \"杨高公司\", \"zbh\": \"S01-002\", \"bysj\": 1663171200000, \"bydj\": \"一级保养\", \"bydd\": \"成山路\"}], \"msg\": \"成功\", \"code\": \"200\", \"success\": true}");
Map map = objectMapper.readValue(stringBuffer.toString(), Map.class);
list = objectMapper.readValue(objectMapper.writeValueAsString(map.get("result")), objectMapper.getTypeFactory().constructParametricType(List.class, MaintenancePlan.class));
for (MaintenancePlan sd : list) {
MtPlanCenter.put(sd);
}
}
if (null != response)
response.close();
} catch (Exception e) {
logger.error("维修保养计划接口报错了", e);
}
logger.warn("维修保养计划获取数据结束");
}
@Override
public void afterPropertiesSet() throws Exception {
try {
SSLContext sslCtx = SSLContext.getInstance("TLSv1.2");
sslCtx.init(null, new TrustManager[] {
new X509TrustManager() {
@Override
public void checkClientTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
}
@Override
public void checkServerTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
}
@Override
public X509Certificate[] getAcceptedIssuers() {
return null;
}
}
}, null);
sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslCtx, new HostnameVerifier() {
@Override
public boolean verify(String hostname, SSLSession session) {
// TODO Auto-generated method stub
return true;
}
});
} catch (Exception e) {
logger.error("SSL context set fail: {}", e);
}
httpClient = defaultHttpClient(url);
requestConfig = RequestConfig.custom()
.setConnectTimeout(5500).setConnectionRequestTimeout(5000)
.setSocketTimeout(5500).build();
}
}