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 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 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 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 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) { return null; } } public static String getRequest(String url, Map 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 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跨域请求数据响应
* 方法名:responsejsonpData
* * @param request * @param response * @param map void
* @throws
* @author:Mryang
* @createTime:2016年7月31日-下午11:17:31
* @tel: 15198268054
* @since 1.0.0 */ public void responsejsonpData(HttpServletRequest request, HttpServletResponse response, Map 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(); } } }