对比新文件 |
| | |
| | | package com.gk.firework.Domain.Utils; |
| | | |
| | | import org.springframework.web.bind.annotation.ResponseBody; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | import org.springframework.web.method.HandlerMethod; |
| | | |
| | | import javax.net.ssl.*; |
| | | import java.io.*; |
| | | import java.net.HttpURLConnection; |
| | | import java.net.URL; |
| | | import java.security.SecureRandom; |
| | | import java.security.cert.CertificateException; |
| | | import java.security.cert.X509Certificate; |
| | | import java.util.Iterator; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * Miscellaneous utilities for web applications. |
| | | * @author L.cm |
| | | */ |
| | | public class WebUtils extends org.springframework.web.util.WebUtils { |
| | | /** |
| | | * 判断是否ajax请求 |
| | | * spring ajax 返回含有 ResponseBody 或者 RestController注解 |
| | | * @param handlerMethod HandlerMethod |
| | | * @return 是否ajax请求 |
| | | */ |
| | | |
| | | private static final String DEFAULT_CHARSET = "UTF-8"; |
| | | private static boolean ignoreSSLCheck = true; |
| | | private static boolean ignoreHostCheck = true; |
| | | |
| | | public static boolean isAjax(HandlerMethod handlerMethod) { |
| | | ResponseBody responseBody = handlerMethod.getMethodAnnotation(ResponseBody.class); |
| | | if (null != responseBody) { |
| | | return true; |
| | | } |
| | | RestController restAnnotation = handlerMethod.getBean().getClass().getAnnotation(RestController.class); |
| | | if (null != restAnnotation) { |
| | | return true; |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | private static HttpURLConnection getConnection(URL url, String method, String ctype, Map<String, String> headerMap) throws IOException { |
| | | Object conn = (HttpURLConnection)url.openConnection(); |
| | | if(conn instanceof HttpsURLConnection) { |
| | | HttpsURLConnection i$ = (HttpsURLConnection)conn; |
| | | if(ignoreSSLCheck) { |
| | | try { |
| | | SSLContext entry = SSLContext.getInstance("TLS"); |
| | | entry.init((KeyManager[])null, new TrustManager[]{new TrustAllTrustManager()}, new SecureRandom()); |
| | | i$.setSSLSocketFactory(entry.getSocketFactory()); |
| | | i$.setHostnameVerifier(new HostnameVerifier() { |
| | | public boolean verify(String hostname, SSLSession session) { |
| | | return true; |
| | | } |
| | | }); |
| | | } catch (Exception var7) { |
| | | throw new IOException(var7.toString()); |
| | | } |
| | | } else if(ignoreHostCheck) { |
| | | i$.setHostnameVerifier(new HostnameVerifier() { |
| | | public boolean verify(String hostname, SSLSession session) { |
| | | return true; |
| | | } |
| | | }); |
| | | } |
| | | |
| | | conn = i$; |
| | | } |
| | | |
| | | ((HttpURLConnection)conn).setRequestMethod(method); |
| | | ((HttpURLConnection)conn).setDoInput(true); |
| | | ((HttpURLConnection)conn).setDoOutput(true); |
| | | if(headerMap != null && headerMap.get("TOP_HTTP_DNS_HOST") != null) { |
| | | ((HttpURLConnection)conn).setRequestProperty("Host", (String)headerMap.get("TOP_HTTP_DNS_HOST")); |
| | | } else { |
| | | ((HttpURLConnection)conn).setRequestProperty("Host", url.getHost()); |
| | | } |
| | | |
| | | ((HttpURLConnection)conn).setRequestProperty("Accept", "text/xml,text/javascript"); |
| | | ((HttpURLConnection)conn).setRequestProperty("Content-Type", ctype); |
| | | if(headerMap != null) { |
| | | Iterator i$1 = headerMap.entrySet().iterator(); |
| | | |
| | | while(i$1.hasNext()) { |
| | | Map.Entry entry1 = (Map.Entry)i$1.next(); |
| | | if(!"TOP_HTTP_DNS_HOST".equals(entry1.getKey())) { |
| | | ((HttpURLConnection)conn).setRequestProperty((String)entry1.getKey(), (String)entry1.getValue()); |
| | | } |
| | | } |
| | | } |
| | | |
| | | return (HttpURLConnection)conn; |
| | | } |
| | | |
| | | public static String getStreamAsString(InputStream stream, String charset) throws IOException { |
| | | try { |
| | | InputStreamReader reader = new InputStreamReader(stream, charset); |
| | | StringBuilder response = new StringBuilder(); |
| | | char[] buff = new char[1024]; |
| | | boolean read = false; |
| | | |
| | | int read1; |
| | | while((read1 = reader.read(buff)) > 0) { |
| | | response.append(buff, 0, read1); |
| | | } |
| | | |
| | | String var6 = response.toString(); |
| | | return var6; |
| | | } finally { |
| | | if(stream != null) { |
| | | stream.close(); |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | public static class TrustAllTrustManager implements X509TrustManager { |
| | | public TrustAllTrustManager() { |
| | | } |
| | | |
| | | public X509Certificate[] getAcceptedIssuers() { |
| | | return null; |
| | | } |
| | | |
| | | public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException { |
| | | } |
| | | |
| | | public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException { |
| | | } |
| | | } |
| | | |
| | | public static String ytoSendPost(String url, Map<String, String> params) |
| | | { |
| | | OutputStreamWriter out = null; |
| | | BufferedReader in = null; |
| | | StringBuilder result = new StringBuilder(); |
| | | try { |
| | | URL realUrl = new URL(url); |
| | | HttpURLConnection conn =(HttpURLConnection) realUrl.openConnection(); |
| | | // 发送POST请求必须设置如下两行 |
| | | conn.setDoOutput(true); |
| | | conn.setDoInput(true); |
| | | // POST方法 |
| | | conn.setRequestMethod("POST"); |
| | | // 设置通用的请求属性 |
| | | conn.setRequestProperty("accept", "*/*"); |
| | | conn.setRequestProperty("connection", "Keep-Alive"); |
| | | conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); |
| | | conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); |
| | | conn.connect(); |
| | | // 获取URLConnection对象对应的输出流 |
| | | out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8"); |
| | | // 发送请求参数 |
| | | if (params != null) { |
| | | StringBuilder param = new StringBuilder(); |
| | | for (Map.Entry<String, String> entry : params.entrySet()) { |
| | | if(param.length()>0){ |
| | | param.append("&"); |
| | | } |
| | | param.append(entry.getKey()); |
| | | param.append("="); |
| | | param.append(entry.getValue()); |
| | | } |
| | | out.write(param.toString()); |
| | | } |
| | | // flush输出流的缓冲 |
| | | out.flush(); |
| | | // 定义BufferedReader输入流来读取URL的响应 |
| | | in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8")); |
| | | String line; |
| | | while ((line = in.readLine()) != null) { |
| | | result.append(line); |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | //使用finally块来关闭输出流、输入流 |
| | | finally{ |
| | | try{ |
| | | if(out!=null){ |
| | | out.close(); |
| | | } |
| | | if(in!=null){ |
| | | in.close(); |
| | | } |
| | | } |
| | | catch(IOException ex){ |
| | | ex.printStackTrace(); |
| | | } |
| | | } |
| | | return result.toString(); |
| | | } |
| | | |
| | | } |