chenweida пре 8 година
родитељ
комит
c8c2d54bc6

+ 61 - 12
patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/task/PushMsgTask.java

@ -1,15 +1,22 @@
package com.yihu.wlyy.statistics.task;
import com.yihu.wlyy.statistics.util.http.HttpHelper;
import com.yihu.wlyy.statistics.util.http.HttpResponse;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.apache.http.NameValuePair;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import java.util.HashMap;
import java.util.Map;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.LinkedBlockingQueue;
public class PushMsgTask {
@ -117,14 +124,13 @@ public class PushMsgTask {
	 */
	public static boolean pushMessage(String receiver, String msgType, String title, String msg, String data) {
		try {
			HttpHelper httpHelper=new HttpHelper();
			Map<String,Object> params =new HashMap<>();
			params.put("to",receiver);
			params.put("content",msg);
			params.put("contentType",msgType);
			params.put("title",title);
			params.put("summary",data);
			HttpResponse response = httpHelper.post(url, params);
			List<NameValuePair> params = new ArrayList<NameValuePair>();
			params.add(new BasicNameValuePair("to", receiver));
			params.add(new BasicNameValuePair("content", msg));
			params.add(new BasicNameValuePair("contentType", msgType));
			params.add(new BasicNameValuePair("title", title));
			params.add(new BasicNameValuePair("summary", data));
			HttpResponse response = post(url, params);
			if (response != null && response.getStatusCode() == 200) {
				JSONObject json = JSONObject.fromObject(response.getBody());
				if (!"200".equals(json.optString("status"))) {
@ -139,4 +145,47 @@ public class PushMsgTask {
		}
		return false;
	}
	private static HttpResponse post(String url, List<NameValuePair> params) {
		HttpResponse re = new HttpResponse();
		CloseableHttpResponse response = null;
		CloseableHttpClient httpclient =  HttpClients.createDefault();
		//设置请求信息
		try {
			RequestConfig requestConfig = RequestConfig.custom().
					setAuthenticationEnabled(true).build();
			HttpPost request = new HttpPost(url );
			request.setEntity(new UrlEncodedFormEntity(params,"UTF-8"));
			request.setConfig(requestConfig);
			response = httpclient.execute(request);
			re.setStatusCode(response.getStatusLine().getStatusCode());
			re.setBody(EntityUtils.toString(response.getEntity(), "UTF-8"));
		} catch (Exception e) {
			re.setStatusCode(201);
			re.setBody(e.getMessage());
		} finally {
			close(httpclient, response);
		}
		return re;
	}
	private static void close(CloseableHttpClient httpClient, CloseableHttpResponse response) {
		try {
			if (httpClient != null) {
				httpClient.close();
			}
		} catch (Exception e) {
			System.out.print("关闭httpClient失败");
		}
		try {
			if (response != null) {
				response.close();
			}
		} catch (Exception e) {
			System.out.print("关闭response失败");
		}
	}
}

+ 0 - 130
patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/util/http/HttpClientUtil.java

@ -1,130 +0,0 @@
package com.yihu.wlyy.statistics.util.http;
import org.apache.http.Consts;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.*;
import org.apache.http.client.protocol.HttpClientContext;
import org.apache.http.client.utils.URLEncodedUtils;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
 * Created by hzp on 2016/8/9.
 */
public class HttpClientUtil {
    /**************************** 私有方法 *****************************************/
    private static CloseableHttpClient getCloseableHttpClient(SSLConnectionSocketFactory ssl) {
        if(ssl == null)
        {
            return HttpClients.createDefault();
        }
        else{
            CloseableHttpClient httpClient = HttpClients.custom()
                    .setSSLSocketFactory(ssl)
                    .build();
            return httpClient;
        }
    }
    private static void close(CloseableHttpClient httpClient, CloseableHttpResponse response) {
        try {
            if (httpClient != null) {
                httpClient.close();
            }
        } catch (Exception e) {
            System.out.print("关闭httpClient失败");
        }
        try {
            if (response != null) {
                response.close();
            }
        } catch (Exception e) {
            System.out.print("关闭response失败");
        }
    }
    private static HttpRequestBase getRequest(String method,String url,Map<String,Object> params,Map<String,Object> header) throws Exception
    {
        List<BasicNameValuePair> jsonParams = new ArrayList<>();
        //配置参数
        if(params!=null) {
            for (String key : params.keySet()) {
                jsonParams.add(new BasicNameValuePair(key, String.valueOf(params.get(key))));
            }
        }
        HttpRequestBase request;
        if(method.equals("POST"))
        {
            request = new HttpPost(url + "?" + URLEncodedUtils.format(jsonParams, Consts.UTF_8));
        }
        else if(method.equals("PUT"))
        {
            request = new HttpPut(url + "?" + URLEncodedUtils.format(jsonParams, Consts.UTF_8));
        }
        else if(method.equals("DELETE"))
        {
            request = new HttpDelete(url + "?" + URLEncodedUtils.format(jsonParams, Consts.UTF_8));
        }
        else
        {
            request = new HttpGet(url + "?" + URLEncodedUtils.format(jsonParams, Consts.UTF_8));
        }
        //配置头部信息
        if(header!=null)
        {
            for (String key : header.keySet()) {
                request.addHeader(key, header.get(key).toString());
            }
        }
        return request;
    }
    /****************************** 公用方法 *******************************************/
    /**
     * get请求
     */
    public static HttpResponse request(String method,String url,Map<String,Object> params,Map<String,Object> header,SSLConnectionSocketFactory ssl,String user,String password) {
        HttpResponse re = new HttpResponse();
        CloseableHttpResponse response = null;
        CloseableHttpClient httpclient = getCloseableHttpClient(ssl);
        //设置请求信息
        try {
            RequestConfig requestConfig = RequestConfig.custom().
                    setAuthenticationEnabled(true).build();
            HttpRequestBase request = getRequest(method,url,params,header);
            request.setConfig(requestConfig);
            //需要验证
            if (!StringUtils.isEmpty(user) && !StringUtils.isEmpty(password)) {
                HttpClientContext context = HttpClientContext.create();
                //通过http的上下文设置账号密码
                CredentialsProvider credsProvider = new BasicCredentialsProvider();
                credsProvider.setCredentials(new org.apache.http.auth.AuthScope(org.apache.http.auth.AuthScope.ANY_HOST, org.apache.http.auth.AuthScope.ANY_PORT),new org.apache.http.auth.UsernamePasswordCredentials(user, password));
                context.setCredentialsProvider(credsProvider);
                response = httpclient.execute(request, context);
            } else {
                response = httpclient.execute(request);
            }
            re.setStatusCode(response.getStatusLine().getStatusCode());
            re.setBody(EntityUtils.toString(response.getEntity(), "UTF-8"));
        } catch (Exception e) {
            re.setStatusCode(201);
            re.setBody(e.getMessage());
        } finally {
            close(httpclient, response);
        }
        return re;
    }
}

+ 0 - 158
patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/util/http/HttpHelper.java

@ -1,158 +0,0 @@
package com.yihu.wlyy.statistics.util.http;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.conn.ssl.TrustSelfSignedStrategy;
import org.apache.http.ssl.SSLContexts;
import org.springframework.stereotype.Service;
import javax.net.ssl.SSLContext;
import java.io.File;
import java.util.Map;
/**
 * Created by hzp on 2016/8/9.
 */
@Service
public class HttpHelper {
    private String sslKeystore;
    private String sslPassword;
    private String httpsUser;
    private String httpsUserPassword;
    private SSLConnectionSocketFactory  getDefaultSSL()
    {
        try {
            if (sslKeystore != null && sslKeystore.length() > 0 && sslPassword != null && sslPassword.length() > 0) {
                SSLContext sslContext = SSLContexts.custom()
                        .loadTrustMaterial(new File(sslKeystore), sslPassword.toCharArray(),
                                new TrustSelfSignedStrategy())
                        .build();
                return new SSLConnectionSocketFactory(
                        sslContext,
                        new String[]{"TLSv1"},
                        null,
                        null);
            } else {
                return null;
            }
        }
        catch (Exception ex)
        {
            System.out.print("获取SSL配置失败!");
            return null;
        }
    }
    /************************** Get方法 ******************************************/
    public HttpResponse get(String url)
    {
        return get(url,null,null);
    }
    public HttpResponse get(String url,Map<String,Object> params)
    {
        return get(url,params,null);
    }
    public HttpResponse get(String url,Map<String,Object> params,Map<String,Object> header)
    {
        if(url.startsWith("https"))
        {
            return get(url,params,header,getDefaultSSL(),httpsUser,httpsUserPassword);
        }
        else{
            //默认http不走ssl和用户密码
            return get(url, params, header, null, null, null);
        }
    }
    public HttpResponse get(String url,Map<String,Object> params,Map<String,Object> header,SSLConnectionSocketFactory ssl,String user,String password)
    {
        return HttpClientUtil.request("GET", url, params, header, ssl, user, password);
    }
    /************************** Post方法 ******************************************/
    public HttpResponse post(String url)
    {
        return post(url, null, null);
    }
    public HttpResponse post(String url,Map<String,Object> params)
    {
        return post(url, params, null);
    }
    public HttpResponse post(String url,Map<String,Object> params,Map<String,Object> header)
    {
        if(url.startsWith("https"))
        {
            return post(url, params, header, getDefaultSSL(),httpsUser,httpsUserPassword);
        }
        else{
            //默认http不走ssl和用户密码
            return post(url, params, header, null, null, null);
        }
    }
    public HttpResponse post(String url,Map<String,Object> params,Map<String,Object> header,SSLConnectionSocketFactory ssl,String user,String password)
    {
        return HttpClientUtil.request("POST",url,params,header,ssl,user,password);
    }
    /************************** Put方法 ******************************************/
    public HttpResponse put(String url)
    {
        return put(url, null, null);
    }
    public HttpResponse put(String url,Map<String,Object> params)
    {
        return put(url, params, null);
    }
    public HttpResponse put(String url,Map<String,Object> params,Map<String,Object> header)
    {
        if(url.startsWith("https"))
        {
            return put(url, params, header, getDefaultSSL(),httpsUser,httpsUserPassword);
        }
        else{
            //默认http不走ssl和用户密码
            return put(url, params, header, null, null, null);
        }
    }
    public HttpResponse put(String url,Map<String,Object> params,Map<String,Object> header,SSLConnectionSocketFactory ssl,String user,String password)
    {
        return HttpClientUtil.request("PUT",url,params,header,ssl,user,password);
    }
    /************************** Delete方法 **************************************/
    public HttpResponse delete(String url)
    {
        return delete(url, null, null);
    }
    public HttpResponse delete(String url,Map<String,Object> params)
    {
        return delete(url, params, null);
    }
    public HttpResponse delete(String url,Map<String,Object> params,Map<String,Object> header)
    {
        if(url.startsWith("https"))
        {
            return delete(url, params, header, getDefaultSSL(),httpsUser,httpsUserPassword);
        }
        else{
            //默认http不走ssl和用户密码
            return delete(url, params, header, null, null, null);
        }
    }
    public static HttpResponse delete(String url,Map<String,Object> params,Map<String,Object> header,SSLConnectionSocketFactory ssl,String user,String password)
    {
        return HttpClientUtil.request("DELETE",url,params,header,ssl,user,password);
    }
}