package com.caimei.util.helipay; import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.HttpStatus; import org.apache.commons.httpclient.NameValuePair; import org.apache.commons.httpclient.methods.PostMethod; import org.apache.commons.httpclient.params.HttpMethodParams; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.util.*; public class HttpClientService { private static final Log LOG = LogFactory.getLog(HttpClientService.class); public static Map getHttpResp(Map reqMap, String httpUrl) { HttpClient client = new HttpClient(); PostMethod method = new PostMethod(httpUrl); method.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8"); method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler()); method.getParams().setParameter(HttpMethodParams.SO_TIMEOUT, new Integer(300000)); String response = ""; Map mp = new HashMap(); try { NameValuePair[] nvps = getNameValuePair(reqMap); method.setRequestBody(nvps); int rescode = client.executeMethod(method); mp.put("statusCode", rescode); LOG.info("http rescode:" + rescode); if (rescode == HttpStatus.SC_OK) { BufferedReader reader = new BufferedReader(new InputStreamReader(method.getResponseBodyAsStream(), "UTF-8")); String curline = ""; while ((curline = reader.readLine()) != null) { response += curline; } LOG.info("http response:" + response); mp.put("response", response); } } catch (Exception e) { e.printStackTrace(); } finally { method.releaseConnection(); } return mp; } /** * * HTTP协议POST请求方法 */ public static String httpMethodPost(String url, String params, String gb) { if (null == gb || "".equals(gb)) { gb = "UTF-8"; } StringBuffer sb = new StringBuffer(); URL urls; HttpURLConnection uc = null; BufferedReader in = null; DataOutputStream out = null; try { urls = new URL(url); uc = (HttpURLConnection) urls.openConnection(); uc.setRequestMethod("POST"); uc.setDoOutput(true); uc.setDoInput(true); uc.setUseCaches(false); uc.setRequestProperty("Connection", "keep-alive"); uc.setRequestProperty("Keep-Alive", "timeout=1, max=100"); uc.setRequestProperty("Content-Length", params.length() + ""); uc.setRequestProperty("Content-Type","application/json"); uc.setConnectTimeout(7000); uc.setReadTimeout(10000); uc.connect(); out = new DataOutputStream(uc.getOutputStream()); out.write(params.getBytes(gb)); out.flush(); out.close(); in = new BufferedReader(new InputStreamReader(uc.getInputStream(), gb)); String readLine = ""; while ((readLine = in.readLine()) != null) { sb.append(readLine); } } catch (IOException e) { e.printStackTrace(); } finally { try { if (out != null){ out.close(); } if (in != null){ in.close(); } if (uc != null) { uc.disconnect(); } } catch (IOException e) { e.printStackTrace(); } } return sb.toString(); } public static NameValuePair[] getNameValuePair(Map bean) { List x = new ArrayList(); for (Iterator iterator = bean.keySet().iterator(); iterator.hasNext(); ) { String type = (String) iterator.next(); x.add(new NameValuePair(type, String.valueOf(bean.get(type)))); } Object[] y = x.toArray(); NameValuePair[] n = new NameValuePair[y.length]; System.arraycopy(y, 0, n, 0, y.length); return n; } }