| 
					
				 | 
			
			
				@@ -0,0 +1,180 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+package fi.cas.opplugin; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.alibaba.fastjson.JSONObject; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.apache.http.Header; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.apache.http.HttpEntity; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.apache.http.HttpResponse; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.apache.http.client.HttpClient; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.apache.http.client.config.RequestConfig; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.apache.http.client.entity.GzipDecompressingEntity; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.apache.http.client.methods.HttpPost; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.apache.http.config.Registry; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.apache.http.config.RegistryBuilder; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.apache.http.conn.socket.ConnectionSocketFactory; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.apache.http.conn.socket.PlainConnectionSocketFactory; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.apache.http.conn.ssl.NoopHostnameVerifier; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.apache.http.conn.ssl.SSLConnectionSocketFactory; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.apache.http.entity.ContentType; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.apache.http.entity.StringEntity; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.apache.http.impl.client.CloseableHttpClient; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.apache.http.impl.client.DefaultHttpClient; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.apache.http.impl.client.HttpClients; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.apache.http.params.HttpConnectionParams; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.apache.http.params.HttpParams; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.apache.http.util.EntityUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.slf4j.Logger; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.slf4j.LoggerFactory; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import javax.net.ssl.KeyManager; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import javax.net.ssl.SSLContext; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import javax.net.ssl.TrustManager; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import javax.net.ssl.X509TrustManager; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import javax.security.cert.CertificateException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.io.BufferedReader; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.io.IOException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.io.InputStream; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.io.InputStreamReader; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.net.URI; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.security.SecureRandom; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.security.cert.X509Certificate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.Arrays; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.Iterator; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.Map; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+public class HttpUtils { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private static Logger logger = LoggerFactory.getLogger(HttpUtils.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private static int default_connectionTimeout = Integer.getInteger("httpclient.connectionTimeout", 3000); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private static int default_readTimeout = Integer.getInteger("httpclient.readTimeout", 5000); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private static String SCHEME_HTTPS = "https"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public static String postjson(String url, Map<String, String> header, String json) throws IOException { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return postjson(url, header, json, default_connectionTimeout, default_readTimeout); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public static String postjson(String url, Map<String, String> header, String json, int connectionTimeout, int readTimeout) throws IOException { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String CONTENT_TYPE_TEXT_JSON = "text/json;"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String data = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        HttpClient client = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        HttpPost post = new HttpPost(url); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        URI uri = post.getURI(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (SCHEME_HTTPS.equals(uri.getScheme())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            client = wrapperHttpClient(connectionTimeout, readTimeout); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (client == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return data; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            client = createHttpClient(connectionTimeout, readTimeout); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            HttpParams httpParams = client.getParams(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            HttpConnectionParams.setConnectionTimeout(httpParams, connectionTimeout); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            HttpConnectionParams.setSoTimeout(httpParams, readTimeout); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (header != null && header.size() != 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                Iterator<String> iterator = header.keySet().iterator(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                while(iterator.hasNext()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    String key = (String)iterator.next(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    post.setHeader(key, (String)header.get(key)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            StringEntity se = new StringEntity(json, ContentType.APPLICATION_JSON); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            se.setContentType("text/json;"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            post.setEntity(se); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            HttpResponse response = client.execute(post); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (response.getStatusLine().getStatusCode() == 200) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                HttpEntity resEntity = response.getEntity(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                Header respHeader = resEntity.getContentEncoding(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (respHeader == null || !"gzip".equalsIgnoreCase(respHeader.getValue()) && !"x-gzip".equalsIgnoreCase(respHeader.getValue())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    data = EntityUtils.toString(resEntity, "UTF-8"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    GzipDecompressingEntity gzipEntity = new GzipDecompressingEntity(resEntity); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    InputStream in = gzipEntity.getContent(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    data = getHTMLContent(in); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } catch (IOException var19) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            logger.warn("Http postjson error", var19); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            throw var19; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } catch (Exception e){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            logger.warn("Http postjson error", e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            throw e; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } finally { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            post.releaseConnection(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return data; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private static String getHTMLContent(InputStream in) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        StringBuffer sb = new StringBuffer(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        BufferedReader br = new BufferedReader(new InputStreamReader(in)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            String line = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            while((line = br.readLine()) != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                sb.append(line); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } catch (IOException var12) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            logger.error("getHTMLContent error", var12); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } finally { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                br.close(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } catch (IOException var11) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                logger.error("getHTMLContent error", var11); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return sb.toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private static HttpClient createHttpClient(int connectionTimeout, int readTimeout) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        HttpClient client = new DefaultHttpClient(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        HttpParams httpParams = client.getParams(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        HttpConnectionParams.setConnectionTimeout(httpParams, connectionTimeout); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        HttpConnectionParams.setSoTimeout(httpParams, readTimeout); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return client; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public static HttpClient wrapperHttpClient(int connectionTimeout, int readTimeout) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            final X509TrustManager trustManager = new X509TrustManager() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                public X509Certificate[] getAcceptedIssuers() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    return null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                public void checkClientTrusted(final javax.security.cert.X509Certificate[] arg0, final String arg1) throws CertificateException { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                public void checkServerTrusted(final javax.security.cert.X509Certificate[] arg0, final String arg1) throws CertificateException { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                public void checkClientTrusted(final X509Certificate[] chain, final String authType) throws java.security.cert.CertificateException { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                public void checkServerTrusted(final X509Certificate[] chain, final String authType) throws java.security.cert.CertificateException { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            SSLContext ctx = SSLContext.getInstance("TLS"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ctx.init((KeyManager[])null, new TrustManager[]{trustManager}, (SecureRandom)null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            SSLConnectionSocketFactory socketFactory = new SSLConnectionSocketFactory(ctx, NoopHostnameVerifier.INSTANCE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            RequestConfig requestConfig = RequestConfig.custom().setCookieSpec("standard-strict").setConnectTimeout(connectionTimeout).setConnectionRequestTimeout(connectionTimeout).setSocketTimeout(readTimeout).setExpectContinueEnabled(Boolean.TRUE).setTargetPreferredAuthSchemes(Arrays.asList("NTLM", "Digest")).setProxyPreferredAuthSchemes(Arrays.asList("Basic")).build(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Registry<ConnectionSocketFactory> socketFactoryRegistry = RegistryBuilder.<ConnectionSocketFactory>create().register("http", PlainConnectionSocketFactory.INSTANCE).register("https", socketFactory).build(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager(socketFactoryRegistry); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            CloseableHttpClient closeableHttpClient = HttpClients.custom().setConnectionManager(connectionManager).setDefaultRequestConfig(requestConfig).build(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return closeableHttpClient; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } catch (Exception var9) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            logger.error("包装无证书校验客户端失败:" + var9.getMessage()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 |