SafeDrivDataLoadThread.java 2.5 KB
package com.bsth.data.safe_driv;

import com.alibaba.fastjson.JSON;
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.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.List;

/**
 * 安全驾驶数据加载线程
 * Created by panzhao on 2017/4/6.
 */
@Component
public class SafeDrivDataLoadThread extends Thread {

    Logger logger = LoggerFactory.getLogger(this.getClass());

    static String url;
    static CloseableHttpClient httpClient;
    static HttpGet get;
    static RequestConfig requestConfig;
    static CloseableHttpResponse response;
    static HttpEntity entity;
    static BufferedReader br;

    static {
        url = "http://180.166.5.82:9007/bsth-safedriving/Crlcxb/realtimeInterface.do";
        httpClient = HttpClients.createDefault();
        get = new HttpGet(url);
        requestConfig = RequestConfig.custom()
                .setConnectTimeout(5500).setConnectionRequestTimeout(5000)
                .setSocketTimeout(5500).build();
        get.setConfig(requestConfig);
    }

    @Override
    public void run() {
        List<SafeDriv> list;
        try {

            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);


                list = JSON.parseArray(stringBuffer.toString(), SafeDriv.class);

                for (SafeDriv sd : list) {
                    SafeDrivCenter.put(sd);
                }
            }

            if (null != response)
                response.close();
        } catch (Exception e) {
            logger.error("安全驾驶接口报错了", e.getMessage());
        }
    }
}