GatewayHttpUtils.java 2.44 KB
package com.bsth.data.directive;

import com.alibaba.fastjson.JSONObject;
import com.bsth.data.SystemParamCache;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Component;

/**
 * @author PanZhao
 * @ClassName: GatewayHttpUtils
 * @Description: TODO(和网关HTTP通讯工具类)
 * @date 2016年8月14日 下午9:50:46
 */
@Component
public class GatewayHttpUtils implements InitializingBean {
    static Logger logger = LoggerFactory.getLogger(GatewayHttpUtils.class);

    static String url;
    static CloseableHttpClient httpClient = null;
    static HttpPost post;
    static RequestConfig requestConfig;
    static CloseableHttpResponse response;

    public static int postJson(String jsonStr) {
        logger.info("send : " + jsonStr);

        int code = -1;
        try {
            post.setEntity(new StringEntity(jsonStr, "utf-8"));

            response = httpClient.execute(post);

            int statusCode = response.getStatusLine().getStatusCode();
            if(statusCode != 200){
                logger.error("http client status code: " + statusCode);
            }

            JSONObject json = JSONObject.parseObject(EntityUtils.toString(response.getEntity()));
            if (null != json && json.getInteger("errCode") == 0)
                code = 0;
            else
                logger.error("和网关http通讯失败,rs: " + json);

            if (null != response)
                response.close();
        } catch (Exception e) {
            logger.error("", e);
        }
        return code;
    }

    @Override
    public void afterPropertiesSet() throws Exception {
        url = SystemParamCache.getUrlHttpDirective();
        httpClient = HttpClients.createDefault();
        post = new HttpPost(url);
        requestConfig = RequestConfig.custom()
                .setConnectTimeout(3000).setConnectionRequestTimeout(2000)
                .setSocketTimeout(3000).build();
        post.setConfig(requestConfig);
    }
}