httpClient的调用

我们项目中以前使用的httpClient代码,现在把他记录下来,.

这是调用的方法类,delete做了处理支持body参数

package org.system.request;

import java.text.MessageFormat;
import java.util.HashMap;
import java.util.Map;

import javax.annotation.Resource;

import org.springframework.stereotype.Component;
import org.system.entity.permission.BaseModule;
import org.system.service.impl.permission.BaseModuleService;
import org.tools.StringUtil;
import org.tools.spring.PropertyConfigurer;
import org.utils.http.DeleteClient;
import org.utils.http.GetClient;
import org.utils.http.PostClient;
import org.utils.http.PutClient;
import org.utils.rsa.RSAUtils;

import com.alibaba.fastjson.JSON;

@Component
public class HttpAPIRequest {
	@Resource
	private PropertyConfigurer propertyConfigurer;
	@Resource
	private BaseModuleService moduleService;
	
	
	/**
	 * GET查列表
	* @author <font color="green"><b>Gong.YiYang</b></font>
	* @param url
	* @return 
	* @date 2017年9月5日
	* @version 1.0
	* @description
	 */
	/*public  Map<String,Object> APIGetFromMap(String url,Object object) {
		Map<String, Object> obj2Map = StringUtil.obj2Map(object);
		String synchronization = GetClient.synchronization(appendURL(url), obj2Map,getPermissionTokenString());
		Map<String, Object> string2Map = StringUtil.String2Map(synchronization);
		return string2Map;
	}*/
	/**
	 * GET查详情
	* @author <font color="green"><b>Gong.YiYang</b></font>
	* @param url
	* @param prams
	* @return 
	* @date 2017年9月6日
	* @version 1.0
	* @description
	 */
	public  Map<String,Object> APIGetFromMap(String url,Object object,Object... arguments) {
		Map<String, Object> obj2Map = StringUtil.obj2Map(object);
		String synchronization = GetClient.synchronization(appendURL(url,arguments), obj2Map,getPermissionTokenString());
		Map<String, Object> string2Map = StringUtil.String2Map(synchronization);
		return string2Map;
	}
	/**
	 * POST
	* @author <font color="green"><b>Gong.YiYang</b></font>
	* @param url
	* @param object
	* @return 
	* @date 2017年9月5日
	* @version 1.0
	* @description
	 */
	public Map<String, Object> APIPostFromMap(String url,Object object){
		Map<String,Object> map = StringUtil.obj2Map(object);
		Map<String, String> headers = getPermissionTokenString();
		String synchronizationForJSON = PostClient.synchronizationForJSON(appendURL(url), map, headers);
		Map<String, Object> string2Map = StringUtil.String2Map(synchronizationForJSON);
		return string2Map;
	}
	/**
	 * 执行PUT方法
	* @author <font color="green"><b>Gong.YiYang</b></font>
	* @param url
	* @param object
	* @return 
	* @date 2017年9月6日
	* @version 1.0
	* @description
	 */
	public Map<String, Object> APIPutFromMap(String url,Object object,Object... arguments){
		Map<String,Object> map = StringUtil.obj2Map(object);
		Map<String, String> headers = getPermissionTokenString();
		String synchronizationForJSON = PutClient.synchronizationForJSON(appendURL(url,arguments), map, headers);
		Map<String, Object> string2Map = StringUtil.String2Map(synchronizationForJSON);
		return string2Map;
	}
	
	/**
	 * 执行Delete方法
	* @author <font color="green"><b>Gong.YiYang</b></font>
	* @param url
	* @param object
	* @return 
	* @date 2017年9月7日
	* @version 1.0
	* @description
	 */
	public Map<String, Object> APIDeleteFromMap(String url,Object object,Object... arguments){
		Map<String, Object> map = StringUtil.obj2Map(object);
		Map<String, String> headers = getPermissionTokenString();
		String synchronization = DeleteClient.synchronization(appendURL(url,arguments), map, headers);
		Map<String, Object> string2Map = StringUtil.String2Map(synchronization);
		return string2Map;
	}
	
	/**
	 * 生成token
	* @author <font color="green"><b>Gong.YiYang</b></font>
	* @return 
	* @date 2017年9月5日
	* @version 1.0
	* @description
	 */
	public Map<String, String> getPermissionTokenString() {
		这个方法是生成校验的token
		 return headers;
	}
	/**
	 * 拼接URL
	* @author <font color="green"><b>Gong.YiYang</b></font>
	* @param url
	* @return 
	* @date 2017年9月5日
	* @version 1.0
	* @description 这是在配置文件获取配置好的url地址
	 */
	public String appendURL(String url,Object... arguments){
		String URL = propertyConfigurer.getProperty("URL");
		String PropertiesURL = MessageFormat.format(propertyConfigurer.getProperty(url), arguments);
		URL = URL+PropertiesURL;
		return URL;
	}

	
}

StringUtil是一个转化类,主要是map和对象的转化,

package org.tools;

import java.io.IOException;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;

import org.core.result.ResultCode;
import org.core.result.ResultMap;

import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;

public class StringUtil {

	/**
	 * string转Map
	 * 
	 * @author <font color="green"><b>Gong.YiYang</b></font>
	 * @param reString
	 * @return
	 * @date 2017年9月5日
	 * @version 1.0
	 * @throws IOException 
	 * @throws JsonMappingException 
	 * @throws JsonParseException 
	 * @description
	 */
	@SuppressWarnings("unchecked")
	public static Map<String, Object> String2Map(String reString)   {
		ObjectMapper mapper = new ObjectMapper();
		Map<String, Object> readValue = ResultMap.convertMap(ResultCode.FAIL);
		try {
			readValue = mapper.readValue(reString, Map.class);
		} catch (IOException e) {
			throw new RuntimeException(e.getMessage());
		}
		return readValue;
	}

	/**
	 * object转map
	 * 
	 * @author <font color="green"><b>Gong.YiYang</b></font>
	 * @param obj
	 * @return
	 * @date 2017年9月5日
	 * @version 1.0
	 * @description
	 */
	public static Map<String, Object> obj2Map(Object obj) {

		Map<String, Object> map = new HashMap<String, Object>();
		// System.out.println(obj.getClass());
		//获取父类分页
		Object rows = getFieldValue(obj, "rows");
		Object page = getFieldValue(obj, "page");
		if (null != rows) {
			map.put("rows", rows);
		} 
		if (null != page) {
			map.put("page", page);
		}
		// 获取f对象对应类中的所有属性域
		Field[] fields = obj.getClass().getDeclaredFields();
		for (int i = 0, len = fields.length; i < len; i++) {
			String varName = fields[i].getName();
			//varName = varName.toLowerCase();// 将key置为小写,默认为对象的属性
			try {
				// 获取原来的访问控制权限
				boolean accessFlag = fields[i].isAccessible();
				// 修改访问控制权限
				fields[i].setAccessible(true);
				// 获取在对象f中属性fields[i]对应的对象中的变量
				Object o = fields[i].get(obj);
				if (null != o) {
					map.put(varName, o);
					//System.out.println("传入的对象中包含一个如下的变量:" + varName + " = " + o);
				}
				// 恢复访问控制权限
				fields[i].setAccessible(accessFlag);
			} catch (IllegalArgumentException ex) {
				ex.printStackTrace();
			} catch (IllegalAccessException ex) {
				ex.printStackTrace();
			}
		}
		return map;
	}

	public static Method getDeclaredMethod(Object object, String methodName, Class<?>... parameterTypes) {
		Method method = null;
		for (Class<?> clazz = object.getClass(); clazz != Object.class; clazz = clazz.getSuperclass()) {
			try {
				method = clazz.getDeclaredMethod(methodName, parameterTypes);
				return method;
			} catch (Exception e) {
				// 这里甚么都不要做!并且这里的异常必须这样写,不能抛出去。
				// 如果这里的异常打印或者往外抛,则就不会执行clazz =
				// clazz.getSuperclass(),最后就不会进入到父类中了
			}
		}
		return null;
	}

	/**
	 * 循环向上转型, 获取对象的 DeclaredField
	 * 
	 * @param object
	 *            : 子类对象
	 * @param fieldName
	 *            : 父类中的属性名
	 * @return 父类中的属性对象
	 */
	public static Field getDeclaredField(Object object, String fieldName) {
		Field field = null;
		Class<?> clazz = object.getClass();
		for (; clazz != Object.class; clazz = clazz.getSuperclass()) {
			try {
				field = clazz.getDeclaredField(fieldName);
				return field;
			} catch (Exception e) {
				// 这里甚么都不要做!并且这里的异常必须这样写,不能抛出去。
				// 如果这里的异常打印或者往外抛,则就不会执行clazz =
				// clazz.getSuperclass(),最后就不会进入到父类中了
			}
		}
		return null;
	}

	/**
	 * 直接读取对象的属性值, 忽略 private/protected 修饰符, 也不经过 getter
	 * 
	 * @param object
	 *            : 子类对象
	 * @param fieldName
	 *            : 父类中的属性名
	 * @return : 父类中的属性值
	 */
	public static Object getFieldValue(Object object, String fieldName) {

		// 根据 对象和属性名通过反射 调用上面的方法获取 Field对象
		Field field = getDeclaredField(object, fieldName);
		// 抑制Java对其的检查
		field.setAccessible(true);
		try {
			// 获取 object 中 field 所代表的属性值
			return field.get(object);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}
}
下面的客户端,是我们老大自己写的

package org.utils.http;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Map;
import java.util.Map.Entry;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

import org.apache.commons.collections.MapUtils;
import org.apache.http.Consts;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.NameValuePair;
import org.apache.http.ParseException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * @author <font color="green"><b></b></font>
 * @date 2017年7月12日
 * @version 1.0
 * @description Get方式调用
 */
public class GetClient {
	private static final Logger logger = LoggerFactory.getLogger(GetClient.class);
	static ExecutorService pool = Executors.newCachedThreadPool();
	private static HttpClient httpClient = HttpClientBuilder.create().build();
	private static RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(20000).setConnectTimeout(10000).build();// 设置请求和传输超时时间

	/**
	 * @author <font color="red"><b></b></font>
	 * @param url
	 * @param headers
	 * @date 2017年7月12日
	 * @version 1.0
	 * @description Get异步调用
	 */
	public static void asynchronous(String url, Map<String, String> headers) {
		pool.execute(new Runnable() {
			@Override
			public void run() {
				HttpGet get = new HttpGet(url);
				/* 设置链接等待时间和超时时间 */
				get.setConfig(requestConfig);
				/* 设置Header */
				if (headers != null && headers.size() > 0) {
					for (Entry<String, String> header : headers.entrySet()) {
						get.setHeader(header.getKey(), header.getValue());
					}
				}
				try {
					long startTime = System.currentTimeMillis();
					HttpResponse response = httpClient.execute(get);
					String resposeText = EntityUtils.toString(response.getEntity());
					long times = System.currentTimeMillis() - startTime;
					if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
						if (logger.isInfoEnabled()) {
							logger.info("GET:[{}] Success Taking:[{}] Header:[{}] Response:[{}]", url, times, headers, resposeText);
						}
					} else {
						if (logger.isWarnEnabled()) {
							logger.warn("GET:[{}] Fail Taking:[{}] Header:[{}] Response:[{}]", url, times, headers, resposeText);
						}
					}
				} catch (IOException e) {
					logger.error("GET:[{}] Error Taking:[{}] Header:[{}] Error Message:[{}]", url, headers, e);
				}
			}
		});
	}

	/**
	 * @author <font color="red"><b></b></font>
	 * @param url
	 * @param headers
	 * @return {@link String}
	 * @date 2017年7月12日
	 * @version 1.0
	 * @description Get同步调用
	 */
	public static String synchronization(String url, Map<String, String> headers) {
		HttpGet get = new HttpGet(url);
		/* 设置链接等待时间和超时时间 */
		get.setConfig(requestConfig);
		/* 设置Header */
		if (headers != null && headers.size() > 0) {
			for (Entry<String, String> header : headers.entrySet()) {
				get.setHeader(header.getKey(), header.getValue());
			}
		}
		try {
			long startTime = System.currentTimeMillis();
			HttpResponse response = httpClient.execute(get);
			String resposeText = EntityUtils.toString(response.getEntity());
			long times = System.currentTimeMillis() - startTime;
			if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
				if (logger.isInfoEnabled()) {
					logger.info("GET:[{}] Success Taking:[{}] Header:[{}] Response:[{}]", url, times, headers, resposeText);
				}
				return resposeText;
			} else {
				if (logger.isWarnEnabled()) {
					logger.warn("GET:[{}] Fail Taking:[{}] Header:[{}] Response:[{}]", url, times, headers, resposeText);
				}
			}
		} catch (IOException e) {
			logger.error("GET:[{}] Error Taking:[{}] Header:[{}] Error Message:[{}]", url, headers, e);
		}
		return null;
	}
	/**
	 * Get同步查询
	 * @param url
	 * @param prams
	 * @param headers
	 * @return
	 * @throws IOException 
	 * @throws ParseException 
	 */
	public static String synchronization(String url,Map<String, Object> prams, Map<String, String> headers) {
		try {
		 //封装请求参数  
        ArrayList<NameValuePair> arrayList = new ArrayList<>();
        if (MapUtils.isNotEmpty(prams)) {
			for (String key : prams.keySet()) {
					if (null != prams.get(key) || ""!= prams.get(key)) {
						arrayList.add(new BasicNameValuePair(key, String.valueOf(prams.get(key))));  
					}
			}
		}
        String str = "";  
         //转换为键值对  
         str = EntityUtils.toString(new UrlEncodedFormEntity(arrayList, Consts.UTF_8));
		HttpGet get = new HttpGet(url+"?"+str);
		/* 设置链接等待时间和超时时间 */
		get.setConfig(requestConfig);
		/* 设置Header */
		if (headers != null && headers.size() > 0) {
			for (Entry<String, String> header : headers.entrySet()) {
				get.setHeader(header.getKey(), header.getValue());
			}
		}
	
			long startTime = System.currentTimeMillis();
			HttpResponse response = httpClient.execute(get);
			String resposeText = EntityUtils.toString(response.getEntity());
			long times = System.currentTimeMillis() - startTime;
			if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
				if (logger.isInfoEnabled()) {
					logger.info("GET:[{}] Success Taking:[{}] Header:[{}] Response:[{}]", url, times, headers, resposeText);
				}
				return resposeText;
			} else {
				if (logger.isWarnEnabled()) {
					logger.warn("GET:[{}] Fail Taking:[{}] Header:[{}] Response:[{}]", url, times, headers, resposeText);
				}
			}
		} catch (IOException e) {
			logger.error("GET:[{}] Error Taking:[{}] Header:[{}] Error Message:[{}]", url, headers, e);
		}
		return null;
	}
	
}
package org.utils.http;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.alibaba.fastjson.JSONObject;

/**
 * @author <font color="green"><b></b></font>
 * @date 2017年7月12日
 * @version 1.0
 * @description Post方式调用
 */
public class PostClient {
	private static final Logger logger = LoggerFactory.getLogger(PostClient.class);
	static ExecutorService pool = Executors.newCachedThreadPool();
	private static HttpClient httpClient = HttpClientBuilder.create().build();
	private static RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(20000).setConnectTimeout(10000).build();// 设置请求和传输超时时间

	/**
	 * @author <font color="red"><b></b></font>
	 * @param url
	 * @param params
	 * @param headers
	 * @date 2017年7月12日
	 * @version 1.0
	 * @description Post异步调用 表单
	 */
	public static void asynchronous(String url, Map<String, Object> params, Map<String, String> headers) {
		pool.execute(new Runnable() {
			@Override
			public void run() {
				HttpPost post = new HttpPost(url);
				/* 设置链接等待时间和超时时间 */
				post.setConfig(requestConfig);
				/* 设置响应头 */
				if (headers != null && headers.size() > 0) {
					for (Entry<String, String> header : headers.entrySet()) {
						post.setHeader(header.getKey(), header.getValue());
					}
				}
				/* 设置需要提交的参数 非JSON格式提交 */
				List<NameValuePair> list = new ArrayList<NameValuePair>();
				if (params != null && params.size() > 0) {
					for (Entry<String, Object> entry : params.entrySet()) {
						Object objValue = entry.getValue();
						list.add(new BasicNameValuePair(entry.getKey(), objValue == null ? "" : objValue.toString()));
					}
				}
				try {
					post.setEntity(new UrlEncodedFormEntity(list, "UTF-8"));
					long startTime = System.currentTimeMillis();
					HttpResponse response = httpClient.execute(post);
					String resposeText = EntityUtils.toString(response.getEntity());
					long times = System.currentTimeMillis() - startTime;
					if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
						if (logger.isInfoEnabled()) {
							logger.info("POST:[{}] Success Taking:[{}] Header:[{}] Params:[{}] Response:[{}]", url, times, headers, params, resposeText);
						}
					} else {
						if (logger.isWarnEnabled()) {
							logger.warn("POST:[{}] Fail Taking:[{}] Header:[{}] Params:[{}] Response:[{}]", url, times, headers, params, resposeText);
						}
					}
				} catch (IOException e) {
					logger.error("POST:[{}] Error Taking:[{}] Header:[{}] Params:[{}] Error Message:[{}]", url, headers, params, e);
				}
			}
		});
	}

	/**
	 * @author <font color="red"><b></b></font>
	 * @param url
	 * @param params
	 * @param headers
	 * @return {@link String}
	 * @date 2017年7月12日
	 * @version 1.0
	 * @description Post同步调用 表单
	 */
	public static String synchronization(String url, Map<String, Object> params, Map<String, String> headers) {
		HttpPost post = new HttpPost(url);
		/* 设置链接等待时间和超时时间 */
		post.setConfig(requestConfig);
		/* 设置响应头 */
		if (headers != null && headers.size() > 0) {
			for (Entry<String, String> header : headers.entrySet()) {
				post.setHeader(header.getKey(), header.getValue());
			}
		}
		/* 设置需要提交的参数 非JSON格式提交 */
		List<NameValuePair> list = new ArrayList<NameValuePair>();
		if (params != null && params.size() > 0) {
			for (Entry<String, Object> entry : params.entrySet()) {
				Object objValue = entry.getValue();
				list.add(new BasicNameValuePair(entry.getKey(), objValue == null ? "" : objValue.toString()));
			}
		}
		try {
			post.setEntity(new UrlEncodedFormEntity(list, "UTF-8"));
			long startTime = System.currentTimeMillis();
			HttpResponse response = httpClient.execute(post);
			String resposeText = EntityUtils.toString(response.getEntity());
			long times = System.currentTimeMillis() - startTime;
			if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
				if (logger.isInfoEnabled()) {
					logger.info("POST:[{}] Success Taking:[{}] Header:[{}] Params:[{}] Response:[{}]", url, times, headers, params, resposeText);
				}
				return resposeText;
			} else {
				if (logger.isWarnEnabled()) {
					logger.warn("POST:[{}] Fail Taking:[{}] Header:[{}] Params:[{}] Response:[{}]", url, times, headers, params, resposeText);
				}
			}
		} catch (IOException e) {
			logger.error("POST:[{}] Error Taking:[{}] Header:[{}] Params:[{}] Error Message:[{}]", url, headers, params, e);
		}
		return null;
	}

	/**
	 * @author <font color="red"><b></b></font>
	 * @param url
	 * @param params
	 * @param headers
	 * @date 2017年7月12日
	 * @version 1.0
	 * @description Post异步调用 JSON
	 */
	public static void asynchronousForJSON(String url, Map<String, Object> params, Map<String, String> headers) {
		pool.execute(new Runnable() {
			@Override
			public void run() {
				HttpPost post = new HttpPost(url);
				/* 设置链接等待时间和超时时间 */
				post.setConfig(requestConfig);
				/* 设置响应头 */
				if (headers != null && headers.size() > 0) {
					for (Entry<String, String> header : headers.entrySet()) {
						post.setHeader(header.getKey(), header.getValue());
					}
				}
				/* 设置需要提交的参数 JSON格式提交 */
				JSONObject jsonParam = new JSONObject();
				if (params != null && params.size() > 0) {
					for (Entry<String, Object> entry : params.entrySet()) {
						jsonParam.put(entry.getKey(), entry.getValue());
					}
				}
				try {
					StringEntity entity = new StringEntity(jsonParam.toString(), "UTF-8");
					entity.setContentEncoding("UTF-8");
					entity.setContentType("application/json");
					post.setEntity(entity);
					long startTime = System.currentTimeMillis();
					HttpResponse response = httpClient.execute(post);
					long times = System.currentTimeMillis() - startTime;
					String resposeText = EntityUtils.toString(response.getEntity());
					if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
						if (logger.isInfoEnabled()) {
							logger.info("POST:[{}] Success Taking:[{}] Header:[{}] Params:[{}] Response:[{}]", url, times, headers, params, resposeText);
						}
					} else {
						if (logger.isWarnEnabled()) {
							logger.warn("POST:[{}] Fail Taking:[{}] Header:[{}] Params:[{}] Response:[{}]", url, times, headers, params, resposeText);
						}
					}
				} catch (IOException e) {
					logger.error("POST:[{}] Error Taking:[{}] Header:[{}] Params:[{}] Error Message:[{}]", url, headers, params, e);
				}
			}
		});
	}

	/**
	 * @author <font color="red"><b></b></font>
	 * @param url
	 * @param params
	 * @param headers
	 * @return {@link String}
	 * @date 2017年7月12日
	 * @version 1.0
	 * @description Post同步调用 JSON
	 */
	public static String synchronizationForJSON(String url, Map<String, Object> params, Map<String, String> headers) {
		HttpPost post = new HttpPost(url);
		/* 设置链接等待时间和超时时间 */
		post.setConfig(requestConfig);
		/* 设置响应头 */
		if (headers != null && headers.size() > 0) {
			for (Entry<String, String> header : headers.entrySet()) {
				post.setHeader(header.getKey(), header.getValue());
			}
		}
		/* 设置需要提交的参数 JSON格式提交 */
		JSONObject jsonParam = new JSONObject();
		if (params != null && params.size() > 0) {
			for (Entry<String, Object> entry : params.entrySet()) {
				jsonParam.put(entry.getKey(), entry.getValue());
			}
		}
		try {
			StringEntity entity = new StringEntity(jsonParam.toString(), "UTF-8");
			entity.setContentEncoding("UTF-8");
			entity.setContentType("application/json");
			post.setEntity(entity);
			long startTime = System.currentTimeMillis();
			HttpResponse response = httpClient.execute(post);
			long times = System.currentTimeMillis() - startTime;
			String resposeText = EntityUtils.toString(response.getEntity());
			if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
				if (logger.isInfoEnabled()) {
					logger.info("POST:[{}] Success Taking:[{}] Header:[{}] Params:[{}] Response:[{}]", url, times, headers, params, resposeText);
				}
				return resposeText;
			} else {
				if (logger.isWarnEnabled()) {
					logger.warn("POST:[{}] Fail Taking:[{}] Header:[{}] Params:[{}] Response:[{}]", url, times, headers, params, resposeText);
				}
			}
		} catch (IOException e) {
			logger.error("POST:[{}] Error Taking:[{}] Header:[{}] Params:[{}] Error Message:[{}]", url, headers, params, e);
		}
		return null;
	}
}

package org.utils.http;


import java.io.IOException;
import java.util.Map;
import java.util.Map.Entry;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;


import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.HttpClient;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.HttpPut;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


import com.alibaba.fastjson.JSONObject;
/**
 * PUT方式提交
 * @author <font color="red"><b></b></font>
 * @Date 2017年9月6日
 * @Version 
 * @Description
 */
public class PutClient {


	private static final Logger logger = LoggerFactory.getLogger(PutClient.class);
	static ExecutorService pool = Executors.newCachedThreadPool();
	private static HttpClient httpClient = HttpClientBuilder.create().build();
	private static RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(20000).setConnectTimeout(10000).build();// 设置请求和传输超时时间




	
	/**
	 * 同步调用PUT使用JSON
	* @author <font color="green"><b></b></font>
	* @param url
	* @param params
	* @param headers
	* @return 
	* @date 2017年9月6日
	* @version 1.0
	* @description
	 */
	public static String synchronizationForJSON(String url, Map<String, Object> params, Map<String, String> headers) {
		HttpPut put = new HttpPut(url);
		/* 设置链接等待时间和超时时间 */
		put.setConfig(requestConfig);
		/* 设置响应头 */
		if (headers != null && headers.size() > 0) {
			for (Entry<String, String> header : headers.entrySet()) {
				put.setHeader(header.getKey(), header.getValue());
			}
		}
		/* 设置需要提交的参数 JSON格式提交 */
		JSONObject jsonParam = new JSONObject();
		if (params != null && params.size() > 0) {
			for (Entry<String, Object> entry : params.entrySet()) {
				jsonParam.put(entry.getKey(), entry.getValue());
			}
		}
		try {
			StringEntity entity = new StringEntity(jsonParam.toString(), "UTF-8");
			entity.setContentEncoding("UTF-8");
			entity.setContentType("application/json");
			put.setEntity(entity);
			long startTime = System.currentTimeMillis();
			HttpResponse response = httpClient.execute(put);
			long times = System.currentTimeMillis() - startTime;
			String resposeText = EntityUtils.toString(response.getEntity());
			if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
				if (logger.isInfoEnabled()) {
					logger.info("PUT:[{}] Success Taking:[{}] Header:[{}] Params:[{}] Response:[{}]", url, times, headers, params, resposeText);
				}
				return resposeText;
			} else {
				if (logger.isWarnEnabled()) {
					logger.warn("PUT:[{}] Fail Taking:[{}] Header:[{}] Params:[{}] Response:[{}]", url, times, headers, params, resposeText);
				}
			}
		} catch (IOException e) {
			logger.error("PUT:[{}] Error Taking:[{}] Header:[{}] Params:[{}] Error Message:[{}]", url, headers, params, e);
		}
		return null;
	}


}
package org.utils.http;

import java.io.IOException;
import java.util.Map;
import java.util.Map.Entry;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

import org.apache.commons.collections.MapUtils;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.ParseException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.HttpDelete;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.alibaba.fastjson.JSONObject;
/**
 * delete方法调用
 * @author <font color="red"><b></b></font>
 * @Date 2017年9月6日
 * @Version 
 * @Description
 */
public class DeleteClient {

	private static final Logger logger = LoggerFactory.getLogger(DeleteClient.class);
	static ExecutorService pool = Executors.newCachedThreadPool();
	private static HttpClient httpClient = HttpClientBuilder.create().build();
	private static RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(20000).setConnectTimeout(10000).build();// 设置请求和传输超时时间

	/**
	 * delete同步调用
	* @author <font color="green"><b></b></font>
	* @param url
	* @param headers
	* @return 
	* @date 2017年9月6日
	* @version 1.0
	* @description
	 */
	public static String synchronization(String url, Map<String, String> headers) {
		HttpDelete delete = new HttpDelete(url);
		/* 设置链接等待时间和超时时间 */
		delete.setConfig(requestConfig);
		/* 设置Header */
		if (headers != null && headers.size() > 0) {
			for (Entry<String, String> header : headers.entrySet()) {
				delete.setHeader(header.getKey(), header.getValue());
			}
		}
		try {
			long startTime = System.currentTimeMillis();
			HttpResponse response = httpClient.execute(delete);
			String resposeText = EntityUtils.toString(response.getEntity());
			long times = System.currentTimeMillis() - startTime;
			if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
				if (logger.isInfoEnabled()) {
					logger.info("DELETE:[{}] Success Taking:[{}] Header:[{}] Response:[{}]", url, times, headers, resposeText);
				}
				return resposeText;
			} else {
				if (logger.isWarnEnabled()) {
					logger.warn("DELETE:[{}] Fail Taking:[{}] Header:[{}] Response:[{}]", url, times, headers, resposeText);
				}
			}
		} catch (IOException e) {
			logger.error("DELETE:[{}] Error Taking:[{}] Header:[{}] Error Message:[{}]", url, headers, e);
		}
		return null;
	}
	/**
	 * delete同步调用可传参
	 * @param url
	 * @param prams
	 * @param headers
	 * @return
	 * @throws IOException 
	 * @throws ParseException 
	 */
	public static String synchronization(String url,Map<String, Object> prams, Map<String, String> headers) {
		HttpDeteleWithBody delete = new HttpDeteleWithBody(url);
		/* 设置链接等待时间和超时时间 */
		delete.setConfig(requestConfig);
		/* 设置Header */
		if (headers != null && headers.size() > 0) {
			for (Entry<String, String> header : headers.entrySet()) {
				delete.setHeader(header.getKey(), header.getValue());
			}
		}
		//设置提交的参数,JSON格式提交
		JSONObject jsonParam = new JSONObject();
		if (MapUtils.isNotEmpty(prams)) {
			for (Entry<String, Object> entry : prams.entrySet()) {
				jsonParam.put(entry.getKey(), entry.getValue());
			}
		}
		try {
			StringEntity entity = new StringEntity(jsonParam.toString(), "UTF-8");
			entity.setContentEncoding("UTF-8");
			entity.setContentType("application/json");
			delete.setEntity(entity);
			long startTime = System.currentTimeMillis();
			HttpResponse response = httpClient.execute(delete);
			String resposeText = EntityUtils.toString(response.getEntity());
			long times = System.currentTimeMillis() - startTime;
			if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
				if (logger.isInfoEnabled()) {
					logger.info("DELETE:[{}] Success Taking:[{}] Header:[{}] Response:[{}]", url, times, headers, resposeText);
				}
				return resposeText;
			} else {
				if (logger.isWarnEnabled()) {
					logger.warn("DELETE:[{}] Fail Taking:[{}] Header:[{}] Response:[{}]", url, times, headers, resposeText);
				}
			}
		} catch (IOException e) {
			logger.error("DELETE:[{}] Error Taking:[{}] Header:[{}] Error Message:[{}]", url, headers, e);
		}
		return null;
	}
	
}
package org.tools.spring;

import java.util.Properties;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;

/**
 * @author <font color="red"><b>Gong.YiYang</b></font>
 * @Date 2018年7月14日
 * @Version 
 * @Description  // 存取properties配置文件key-value结果
 */
public class PropertyConfigurer extends PropertyPlaceholderConfigurer {
	
	private Properties props;       // 存取properties配置文件key-value结果

    @Override
    protected void processProperties(ConfigurableListableBeanFactory beanFactoryToProcess, Properties props)
                            throws BeansException {
        super.processProperties(beanFactoryToProcess, props);
        this.props = props;
    }

    public String getProperty(String key){
        return this.props.getProperty(key);
    }

    public String getProperty(String key, String defaultValue) {
        return this.props.getProperty(key, defaultValue);
    }

    public Object setProperty(String key, String value) {
        return this.props.setProperty(key, value);
    }
}


调用风格使用的restful,自动拼接路径参数

猜你喜欢

转载自blog.csdn.net/sinat_21184471/article/details/81041307