| package com.dsh.other.util; | 
|   | 
| import com.alibaba.fastjson.JSONObject; | 
| import org.apache.commons.httpclient.HttpClient; | 
| import org.apache.commons.httpclient.HttpException; | 
| import org.apache.commons.httpclient.SimpleHttpConnectionManager; | 
| import org.apache.commons.httpclient.methods.GetMethod; | 
| import org.apache.commons.httpclient.methods.PostMethod; | 
|   | 
| import javax.servlet.http.HttpServletRequest; | 
| import javax.servlet.http.HttpServletResponse; | 
| import java.io.IOException; | 
| import java.io.PrintWriter; | 
| import java.security.MessageDigest; | 
| import java.util.Map; | 
|   | 
| public class HttpRequestUtil { | 
|      | 
|     public static String postRequest(String url, Map<String, String> params) { | 
|         // 构造HttpClient的实例 | 
|         HttpClient httpClient = new HttpClient(); | 
|         // 创建POST方法的实例 | 
|         PostMethod postMethod = new PostMethod(url); | 
|         // 设置请求头信息 | 
|         postMethod.setRequestHeader("Connection", "close"); | 
|         postMethod.addRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8"); | 
|         // 添加参数 | 
|         for (Map.Entry<String, String> entry : params.entrySet()) { | 
|             postMethod.addParameter(entry.getKey(), entry.getValue()); | 
|         } | 
|         // 使用系统提供的默认的恢复策略,设置请求重试处理,用的是默认的重试处理:请求三次 | 
|         httpClient.getParams().setBooleanParameter("http.protocol.expect-continue", false); | 
|         // 接收处理结果 | 
|         String result = null; | 
|         try { | 
|             // 执行Http Post请求 | 
|             httpClient.executeMethod(postMethod); | 
|             // 返回处理结果 | 
|             result = postMethod.getResponseBodyAsString(); | 
|         } catch (HttpException e) { | 
|             // 发生致命的异常,可能是协议不对或者返回的内容有问题 | 
|             System.out.println("请检查输入的URL!"); | 
|             e.printStackTrace(); | 
|         } catch (IOException e) { | 
|             // 发生网络异常 | 
|             System.out.println("发生网络异常!"); | 
|             e.printStackTrace(); | 
|         } finally { | 
|             // 释放链接 | 
|             postMethod.releaseConnection(); | 
|             // 关闭HttpClient实例 | 
|             if (httpClient != null) { | 
|                 ((SimpleHttpConnectionManager) httpClient.getHttpConnectionManager()).shutdown(); | 
|                 httpClient = null; | 
|             } | 
|         } | 
|         return result; | 
|     } | 
|     public static String postRequest1(String url, Map<String, String> params,String appKey,String appSecret) { | 
|         // 构造HttpClient的实例 | 
|         HttpClient httpClient = new HttpClient(); | 
|         // 创建POST方法的实例 | 
|         PostMethod postMethod = new PostMethod(url); | 
|         // 设置请求头信息 | 
|         String nonce = String.valueOf(Double.valueOf(Math.random() * 1000000.0D).intValue()); | 
|         String timeMillis = String.valueOf(System.currentTimeMillis()); | 
|         String signature  = string2Sha1(appSecret + nonce + timeMillis); | 
|         postMethod.setRequestHeader("Host", "api-cn.ronghub.com"); | 
|         postMethod.setRequestHeader("App-Key", appKey); | 
|         postMethod.setRequestHeader("Signature", signature); | 
|         postMethod.setRequestHeader("Nonce", nonce); | 
|         postMethod.setRequestHeader("Timestamp", timeMillis); | 
|         postMethod.setRequestHeader("Host", "api-cn.ronghub.com"); | 
|         postMethod.addRequestHeader("Content-Type", "application/json"); | 
|         // 添加参数 | 
|         for (Map.Entry<String, String> entry : params.entrySet()) { | 
|             postMethod.addParameter(entry.getKey(), entry.getValue()); | 
|         } | 
|         // 使用系统提供的默认的恢复策略,设置请求重试处理,用的是默认的重试处理:请求三次 | 
|         httpClient.getParams().setBooleanParameter("http.protocol.expect-continue", false); | 
|         // 接收处理结果 | 
|         String result = null; | 
|         try { | 
|             // 执行Http Post请求 | 
|             httpClient.executeMethod(postMethod); | 
|             // 返回处理结果 | 
|             result = postMethod.getResponseBodyAsString(); | 
|         } catch (HttpException e) { | 
|             // 发生致命的异常,可能是协议不对或者返回的内容有问题 | 
|             System.out.println("请检查输入的URL!"); | 
|             e.printStackTrace(); | 
|         } catch (IOException e) { | 
|             // 发生网络异常 | 
|             System.out.println("发生网络异常!"); | 
|             e.printStackTrace(); | 
|         } finally { | 
|             // 释放链接 | 
|             postMethod.releaseConnection(); | 
|             // 关闭HttpClient实例 | 
|             if (httpClient != null) { | 
|                 ((SimpleHttpConnectionManager) httpClient.getHttpConnectionManager()).shutdown(); | 
|                 httpClient = null; | 
|             } | 
|         } | 
|         return result; | 
|     } | 
|     private static String string2Sha1(String str){ | 
|         if(str==null||str.length()==0){ | 
|             return null; | 
|         } | 
|         char hexDigits[] = {'0','1','2','3','4','5','6','7','8','9', | 
|                 'a','b','c','d','e','f'}; | 
|         try { | 
|             MessageDigest mdTemp = MessageDigest.getInstance("SHA1"); | 
|             mdTemp.update(str.getBytes("UTF-8")); | 
|   | 
|             byte[] md = mdTemp.digest(); | 
|             int j = md.length; | 
|             char buf[] = new char[j*2]; | 
|             int k = 0; | 
|             for (int i = 0; i < j; i++) { | 
|                 byte byte0 = md[i]; | 
|                 buf[k++] = hexDigits[byte0 >>> 4 & 0xf]; | 
|                 buf[k++] = hexDigits[byte0 & 0xf]; | 
|             } | 
|             return new String(buf); | 
|         } catch (Exception e) { | 
|             // TODO: handle exception | 
|             return null; | 
|         } | 
|     } | 
|     public static String getRequest(String url, Map<String, String> params) { | 
|         // 构造HttpClient实例 | 
|         HttpClient client = new HttpClient(); | 
|         // 拼接参数 | 
|         String paramStr = ""; | 
|         for (String key : params.keySet()) { | 
|             paramStr = paramStr + "&" + key + "=" + params.get(key); | 
|         } | 
|         paramStr = paramStr.substring(1); | 
|         // 创建GET方法的实例 | 
|         GetMethod method = new GetMethod(url + "?" + paramStr); | 
|         // 接收返回结果 | 
|         String result = null; | 
|         try { | 
|             // 执行HTTP GET方法请求 | 
|             client.executeMethod(method); | 
|             // 返回处理结果 | 
|             result = method.getResponseBodyAsString(); | 
|         } catch (HttpException e) { | 
|             // 发生致命的异常,可能是协议不对或者返回的内容有问题 | 
|             System.out.println("请检查输入的URL!"); | 
|             e.printStackTrace(); | 
|         } catch (IOException e) { | 
|             // 发生网络异常 | 
|             System.out.println("发生网络异常!"); | 
|             e.printStackTrace(); | 
|         } finally { | 
|             // 释放链接 | 
|             method.releaseConnection(); | 
|             // 关闭HttpClient实例 | 
|             if (client != null) { | 
|                 ((SimpleHttpConnectionManager) client | 
|                         .getHttpConnectionManager()).shutdown(); | 
|                 client = null; | 
|             } | 
|         } | 
|         return result; | 
|     } | 
|      | 
|      | 
|     /** | 
|      * 发送网络请求 | 
|      * @param url | 
|      * @return | 
|      */ | 
|     public static String sendNetRequest(String url, Map<String, String> params) { | 
|         // 构造HttpClient实例 | 
|         HttpClient client = new HttpClient(); | 
|         String paramStr = ""; | 
|         for (String key : params.keySet()) { | 
|             paramStr = paramStr + "&" + key + "=" + params.get(key); | 
|         } | 
|         paramStr = paramStr.substring(1); | 
|         System.err.println(url + "?" + paramStr); | 
|         // 创建GET方法的实例 | 
|         GetMethod method = new GetMethod(url + "?" + paramStr); | 
|         // 接收返回结果 | 
|         String result = null; | 
|         try { | 
|             // 执行HTTP GET方法请求 | 
|             client.executeMethod(method); | 
|             // 返回处理结果 | 
|             result = method.getResponseBodyAsString(); | 
|         } catch (HttpException e) { | 
|             // 发生致命的异常,可能是协议不对或者返回的内容有问题 | 
|             System.out.println("请检查输入的URL!"); | 
|             e.printStackTrace(); | 
|         } catch (IOException e) { | 
|             // 发生网络异常 | 
|             System.out.println("发生网络异常!"); | 
|             e.printStackTrace(); | 
|         } finally { | 
|             // 释放链接 | 
|             method.releaseConnection(); | 
|             // 关闭HttpClient实例 | 
|             if (client != null) { | 
|                 ((SimpleHttpConnectionManager) client.getHttpConnectionManager()).shutdown(); | 
|                 client = null; | 
|             } | 
|         } | 
|         return result; | 
|     } | 
|      | 
|      | 
|      | 
|     /** | 
|      * jsonp跨域请求数据响应<br/> | 
|      * 方法名:responsejsonpData<br/> | 
|      * @author:Mryang<br/> | 
|      * @createTime:2016年7月31日-下午11:17:31 <br/> | 
|      * @tel: 15198268054<br/> | 
|      * @param request | 
|      * @param response | 
|      * @param map void<br/> | 
|      * @exception <br/> | 
|      * @since  1.0.0 | 
|      */ | 
|     public void responsejsonpData(HttpServletRequest request, HttpServletResponse response, Map<String, Object> map) { | 
|          response.setCharacterEncoding("UTF-8"); | 
|          response.setHeader("Content-Type", "text/html;Charset=utf-8"); | 
|         try { | 
|             PrintWriter writer = response.getWriter(); | 
|             String params = request.getParameter("callback"); | 
|             String json = JSONObject.toJSONString(map); | 
|             writer.print(params+ "("+json+")"); | 
|         } catch (IOException e) { | 
|             e.printStackTrace(); | 
|         } | 
|     } | 
|      | 
|      | 
|      | 
|      | 
|      | 
|      | 
|      | 
|      | 
|      | 
|      | 
|      | 
|      | 
|      | 
| } |