package com.sitech.ismp.util; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpDelete; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.methods.HttpPut; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.params.BasicHttpParams; import org.apache.http.params.HttpParams; import org.apache.http.util.EntityUtils; import java.net.URI; import java.net.URL; /** * * <p> * Title: HttpClientUtil * </p> * <p> * Description: HttpClient工具类 * </p> * <p> * Copyright: Copyright (c) 2013 * </p> * <p> * Company: SI-TECH * </p> * * @author huojla * @version 1.0 * @createtime 2013-6-16 上午10:17:57 * */ public class HttpClientUtil { private static final Log LOG = LogFactory.getLog(HttpClientUtil.class); private static final String CODE_ENCODING = "UTF-8"; /** * * @Title: post * @Description: Http-Post方式提交数据 用于新建操作 * @param * @return String * @throws * @author huojla * @version 1.0 * @throws HttpClientException * @createtime 2013-6-16 上午10:18:10 */ public static <T> String post(String url, T clazzt) throws HttpClientException { HttpParams httpParams = new BasicHttpParams(); httpParams.setParameter("charset", CODE_ENCODING); HttpClient client = new DefaultHttpClient(httpParams); HttpPost post = new HttpPost(url); String response = ""; try { post.addHeader("Content-Type", "application/json;charset=" + CODE_ENCODING); post.setHeader("Accept", "application/json"); post.setHeader("Content-Type", "application/json;charset=" + CODE_ENCODING); // 转换对象To Json字符串 String clazzToJson = JacksonUtil.toJson(clazzt); // 转码,防止中文乱码 System.out.println("Post " + url + " Data " + clazzToJson); LOG.info("Post " + url + " Data " + clazzToJson); StringEntity s = new StringEntity(clazzToJson, CODE_ENCODING); post.setEntity(s); HttpResponse res = client.execute(post); int statusCode = res.getStatusLine().getStatusCode(); System.out.println("Post " + url + " Data " + clazzToJson + " ResultCode : " + statusCode); LOG.info("Post " + url + " Data " + clazzToJson + " ResultCode : " + statusCode); // 判断返回编码是否为200 if (statusCode != 200 && statusCode != 201) { throw new HttpClientException("Post " + url + "Error!Response Code " + statusCode); } HttpEntity entity = res.getEntity(); response = EntityUtils.toString(entity, CODE_ENCODING); } catch (Exception e) { LOG.error("Post " + url + "Error!" + e.getMessage(), e); throw new HttpClientException("Post " + url + "Error!" + e.getMessage(), e); } return response; } /** * * @Title: delete * @Description: Http Delete请求 用于删除操作 * @param * @return String * @throws * @author huojla * @version 1.0 * @throws HttpClientException * @createtime 2013-7-24 上午9:14:18 */ public static <T> String delete(String url) throws HttpClientException { HttpParams httpParams = new BasicHttpParams(); httpParams.setParameter("charset", CODE_ENCODING); HttpClient client = new DefaultHttpClient(httpParams); HttpDelete delete = new HttpDelete(url); String response = ""; try { delete.addHeader("Content-Type", "application/json;charset=" + CODE_ENCODING); delete.setHeader("Accept", "application/json"); delete.setHeader("Content-Type", "application/json;charset=" + CODE_ENCODING); // 转码,防止中文乱码 System.out.println("Delete " + url); HttpResponse res = client.execute(delete); int statusCode = res.getStatusLine().getStatusCode(); System.out.println("Delete " + url + " ResultCode : " + statusCode); LOG.info("Delete " + url + " ResultCode : " + statusCode); // 判断返回编码是否为200 if (statusCode != 200 && statusCode != 201) { throw new HttpClientException("Delete " + url + "Error!Response Code " + statusCode); } HttpEntity entity = res.getEntity(); response = EntityUtils.toString(entity, CODE_ENCODING); } catch (Exception e) { LOG.error("Delete " + url + "Error!" + e.getMessage(), e); throw new HttpClientException("Delete " + url + "Error!" + e.getMessage(), e); } return response; } /** * * @Title: put * @Description: Http Put 请求 用于修改操作 * @param * @return String * @throws * @author huojla * @version 1.0 * @throws HttpClientException * @createtime 2013-7-24 上午9:50:05 */ public static <T> String put(String url, T clazz) throws HttpClientException { HttpParams httpParams = new BasicHttpParams(); httpParams.setParameter("charset", CODE_ENCODING); HttpClient client = new DefaultHttpClient(httpParams); HttpPut put = new HttpPut(url); String response = ""; try { put.addHeader("Content-Type", "application/json;charset=" + CODE_ENCODING); put.setHeader("Accept", "application/json"); put.setHeader("Content-Type", "application/json;charset=" + CODE_ENCODING); // 转换对象To Json字符串 String clazzToJson = JacksonUtil.toJson(clazz); // 转码,防止中文乱码 System.out.println("Put " + url + " Data " + clazzToJson); LOG.info("Put " + url + " Data " + clazzToJson); StringEntity s = new StringEntity(clazzToJson, CODE_ENCODING); put.setEntity(s); HttpResponse res = client.execute(put); int statusCode = res.getStatusLine().getStatusCode(); System.out.println("Put " + url + " Data " + clazzToJson + " ResultCode : " + statusCode); LOG.info("Put " + url + " Data " + clazzToJson + " ResultCode : " + statusCode); // 判断返回编码是否为200 if (statusCode != 200 && statusCode != 201) { throw new HttpClientException("Put " + url + "Error!Response Code " + statusCode); } HttpEntity entity = res.getEntity(); response = EntityUtils.toString(entity, CODE_ENCODING); } catch (Exception e) { LOG.error("Put " + url + "Error!" + e.getMessage(), e); throw new HttpClientException("Put " + url + "Error!" + e.getMessage(), e); } return response; } /** * * @Title: get * @Description: Http get方式获取数据 用于查询 * @param * @return String * @throws * @author huojla * @version 1.0 * @throws HttpClientException * @createtime 2013-6-16 上午10:26:20 */ public static String get(String url) throws HttpClientException { HttpParams httpParams = new BasicHttpParams(); httpParams.setParameter("charset", CODE_ENCODING); HttpClient client = new DefaultHttpClient(httpParams); HttpGet get = new HttpGet(url); String response = ""; try { get.addHeader("Content-Type", "application/json;charset=" + CODE_ENCODING); get.setHeader("Accept", "application/json"); get.setHeader("Content-Type", "application/json;charset=" + CODE_ENCODING); HttpResponse res = client.execute(get); int statusCode = res.getStatusLine().getStatusCode(); System.out.println("Get " + url + " ResultCode : " + statusCode); LOG.info("Get " + url + " ResultCode : " + statusCode); // 判断返回编码是否为200 if (statusCode != 200 && statusCode != 201) { throw new HttpClientException("Get " + url + "Error!Response Code " + statusCode); } HttpEntity entity = res.getEntity(); response = EntityUtils.toString(entity, CODE_ENCODING); } catch (Exception e) { LOG.error("Get " + url + "异常!" + e.getMessage(), e); throw new HttpClientException("Get " + url + "异常!" + e.getMessage(), e); } return response; } /** * 通过url来获取 * * @param url * @return */ public static String getByUrl(String url) { HttpParams httpParams = new BasicHttpParams(); httpParams.setParameter("Accept", "application/json"); httpParams.setParameter("Content-Type", "application/json;charset=" + CODE_ENCODING); HttpClient client = new DefaultHttpClient(httpParams); String response = ""; try { URL u = new URL(url); URI uri = new URI(u.getProtocol(), null, u.getHost(), u.getPort(), u.getPath(), u.getQuery(), null); HttpGet get = new HttpGet(uri); HttpResponse res = client.execute(get); System.out.println(url); HttpEntity entity = res.getEntity(); response = EntityUtils.toString(entity, CODE_ENCODING); } catch (Exception e) { throw new RuntimeException(e); } return response; } }