package com.dsh.guns.modular.system.util; import java.io.IOException; import java.io.PrintWriter; import java.net.URISyntaxException; import java.util.Iterator; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; 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 org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.utils.URIBuilder; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.util.EntityUtils; public class HttpRequestUtil { /*** * get请求(带参数) * @param url * @return String */ public static String getReq(String url, Map params) { String result = null; try { URIBuilder uriBuilder = new URIBuilder(url); Iterator maplist = params.entrySet().iterator(); while (maplist.hasNext()) { Map.Entry map = (Map.Entry) maplist.next(); uriBuilder.addParameter(map.getKey(), map.getValue()); } CloseableHttpClient client = HttpClientBuilder.create().build(); HttpPost get = new HttpPost(uriBuilder.build()); get.addHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.81 Safari/537.36"); HttpResponse response = client.execute(get); result = EntityUtils.toString(response.getEntity(), "UTF-8"); } catch (URISyntaxException e) { e.printStackTrace(); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return result; } 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 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
* @author:Mryang
* @createTime:2016年7月31日-下午11:17:31
* @tel: 15198268054
* @param request * @param response * @param map void
* @exception
* @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(); } } }