package com.hehenian.biz.common.util; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.net.URLEncoder; import java.util.ArrayList; import java.util.List; import java.util.Map; import org.apache.http.NameValuePair; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; 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.log4j.Logger; import com.hehenian.biz.common.exception.BusinessException; public class HttpClientUtils { private static final Logger logger = Logger .getLogger(HttpClientUtils.class); private static final String parameterJoin = "&"; private static final String parameterEqual = "="; public static String makeUrl(String baseUrl, Map<String, String> parameterMap) { StringBuffer parasb = new StringBuffer(baseUrl); if (null != parameterMap) { parasb.append("?"); for (Map.Entry<String, String> entry : parameterMap.entrySet()) { parasb.append(entry.getKey()).append(parameterEqual) .append(entry.getValue()).append(parameterJoin); } } return parasb.substring(0, parasb.length() - 1); } public static String appendParameter(String baseUrl, Map<String, String> parameterMap) { StringBuffer parasb = new StringBuffer(baseUrl); if (null != parameterMap) { parasb.append(parameterJoin); for (Map.Entry<String, String> entry : parameterMap.entrySet()) { String val = ""; try { if(entry.getValue() != null){ val = URLEncoder.encode(entry.getValue(), "UTF-8"); } } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); val = entry.getValue(); } parasb.append(entry.getKey()).append(parameterEqual) .append(val) .append(parameterJoin); } } return parasb.substring(0, parasb.length() - 1); } public static String get(String url) throws Exception { CloseableHttpClient httpclient = HttpClients.createDefault(); CloseableHttpResponse response = null; logger.info("调用url:" + url);//http://lcdev.hehenian.cn/loan.do?loanDate=2015/06/08&sign=9991b60c7dd3407108a22638f56190a4 try { HttpGet httpGet = new HttpGet(url); response = httpclient.execute(httpGet); InputStream inputStream = response.getEntity().getContent(); BufferedReader rd = new BufferedReader(new InputStreamReader( inputStream)); String line = ""; StringBuffer resultString = new StringBuffer(); while ((line = rd.readLine()) != null) { resultString.append(line); } logger.info(url + "回复:" + resultString.toString()); return resultString.toString(); } catch (Exception e) { logger.error(e.getMessage(), e); throw new BusinessException("发送请求错误:" + e.getMessage()); } finally { try { response.close(); httpclient.close(); } catch (Exception ignore) { } } } public static String get(String url, Map<String, String> params) throws Exception { CloseableHttpClient httpclient = HttpClients.createDefault(); CloseableHttpResponse response = null; logger.info("调用url:" + url); try { String newUrl = appendParameter(url, params); HttpGet httpGet = new HttpGet(newUrl); response = httpclient.execute(httpGet); InputStream inputStream = response.getEntity().getContent(); BufferedReader rd = new BufferedReader(new InputStreamReader( inputStream)); String line = ""; StringBuffer resultString = new StringBuffer(); while ((line = rd.readLine()) != null) { resultString.append(line); } logger.info(url + "回复:" + resultString.toString()); return resultString.toString(); } catch (Exception e) { logger.error(e.getMessage(), e); throw new BusinessException("发送请求错误:" + e.getMessage()); } finally { try { response.close(); httpclient.close(); } catch (Exception ignore) { } } } public static String post(String url, Map<String, String> params) throws Exception { logger.info("调用参数:" + params); CloseableHttpClient httpclient = HttpClients.createDefault(); CloseableHttpResponse response = null; try { List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1); for (String key : params.keySet()) { nameValuePairs .add(new BasicNameValuePair(key, params.get(key))); } HttpPost httpPost = new HttpPost(url); httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs, "utf-8")); response = httpclient.execute(httpPost); InputStream inputStream = response.getEntity().getContent(); BufferedReader rd = new BufferedReader(new InputStreamReader( inputStream)); String line = ""; StringBuffer resultString = new StringBuffer(); while ((line = rd.readLine()) != null) { resultString.append(line); } logger.info("汇付回复:" + URLDecoder.decode(resultString.toString(), "UTF-8")); return resultString.toString(); } catch (Exception e) { logger.error(e.getMessage(), e); throw new BusinessException("发送请求错误:" + e.getMessage()); } finally { try { response.close(); httpclient.close(); } catch (Exception ignore) { } } } /** * 上标 */ public static String sbPost(String url, Map<String, String> params) throws Exception { logger.info("调用参数:" + params); CloseableHttpClient httpclient = HttpClients.createDefault(); CloseableHttpResponse response = null; try { List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1); for (String key : params.keySet()) { nameValuePairs .add(new BasicNameValuePair(key, params.get(key))); } HttpPost httpPost = new HttpPost(url); httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs, "utf-8")); response = httpclient.execute(httpPost); InputStream inputStream = response.getEntity().getContent(); BufferedReader rd = new BufferedReader(new InputStreamReader( inputStream)); String line = ""; StringBuffer resultString = new StringBuffer(); while ((line = rd.readLine()) != null) { resultString.append(line); } try { logger.info("上标回复:" + URLDecoder.decode(resultString.toString(), "UTF-8")); } catch (Exception e) { logger.error(e.getMessage(), e); } return resultString.toString(); } catch (Exception e) { logger.error(e.getMessage(), e); throw new BusinessException("发送请求错误:" + e.getMessage()); } finally { try { response.close(); httpclient.close(); } catch (Exception ignore) { } } } /** * 生成PDF协议 * @auther liminglmf * @date 2015年7月3日 * @param url * @param params * @return * @throws Exception */ public static String getCallBack(String url, Map<String, String> params) throws Exception{ CloseableHttpClient httpclient = HttpClients.createDefault(); CloseableHttpResponse response = null; logger.info("调用url:" + url); try { String newUrl = genNewUrl(url, params); HttpGet httpGet = new HttpGet(newUrl); response = httpclient.execute(httpGet); InputStream inputStream = response.getEntity().getContent(); BufferedReader rd = new BufferedReader(new InputStreamReader( inputStream)); String line = ""; StringBuffer resultString = new StringBuffer(); while ((line = rd.readLine()) != null) { resultString.append(line); } logger.info(newUrl + "返回:" + resultString.toString()); return resultString.toString(); } catch (Exception e) { logger.error(e.getMessage(), e); throw new BusinessException("发送请求错误:" + e.getMessage()); } finally { try { response.close(); httpclient.close(); } catch (Exception ignore) { } } } private static String genNewUrl(String url, Map<String, String> params) { StringBuffer parasb = new StringBuffer(url); if (null != params) { parasb.append("?"); for (Map.Entry<String, String> entry : params.entrySet()) { String val = ""; try { if(entry.getValue() != null){ val = URLEncoder.encode(entry.getValue(), "UTF-8"); } } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); val = entry.getValue(); } parasb.append(entry.getKey()).append(parameterEqual) .append(val).append(parameterJoin); } } return parasb.substring(0, parasb.length() - 1); } /** * * @auther liminglmf * @date 2015年7月3日 * @param url * @param params * @return * @throws Exception */ public static String commonPost(String url, Map<String, String> params) throws Exception { logger.info("请求URL:>>>"+url+"调用参数:>>>>" + params); CloseableHttpClient httpclient = HttpClients.createDefault(); CloseableHttpResponse response = null; try { List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1); for (String key : params.keySet()) { nameValuePairs .add(new BasicNameValuePair(key, params.get(key))); } HttpPost httpPost = new HttpPost(url); httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs, "utf-8")); response = httpclient.execute(httpPost); InputStream inputStream = response.getEntity().getContent(); BufferedReader rd = new BufferedReader(new InputStreamReader( inputStream)); String line = ""; StringBuffer resultString = new StringBuffer(); while ((line = rd.readLine()) != null) { resultString.append(line); } try { logger.info("请求"+url+"回复>>>>>:" + URLDecoder.decode(resultString.toString(), "UTF-8")); } catch (Exception e) { logger.error(e.getMessage(), e); } return resultString.toString(); } catch (Exception e) { logger.error(e.getMessage(), e); throw new BusinessException("发送请求错误:" + e.getMessage()); } finally { try { response.close(); httpclient.close(); } catch (Exception ignore) { } } } }