[转]java 关于httpclient 请求https (如何绕过证书验证)

时间:2024-08-29 23:37:14

原文:http://www.blogjava.net/hector/archive/2012/10/23/390073.html

第一种方法,适用于httpclient4.X 里边有get和post两种方法供你发送请求使用。

导入证书发送请求的在这里就不说了,网上到处都是

[转]java 关于httpclient 请求https (如何绕过证书验证)import java.io.BufferedReader;
[转]java 关于httpclient 请求https (如何绕过证书验证)import java.io.IOException;
[转]java 关于httpclient 请求https (如何绕过证书验证)import java.io.InputStream;
[转]java 关于httpclient 请求https (如何绕过证书验证)import java.io.InputStreamReader;
[转]java 关于httpclient 请求https (如何绕过证书验证)import java.io.UnsupportedEncodingException;
[转]java 关于httpclient 请求https (如何绕过证书验证)import java.net.HttpURLConnection;
[转]java 关于httpclient 请求https (如何绕过证书验证)import java.net.InetAddress;
[转]java 关于httpclient 请求https (如何绕过证书验证)import java.net.InetSocketAddress;
[转]java 关于httpclient 请求https (如何绕过证书验证)import java.net.Socket;
[转]java 关于httpclient 请求https (如何绕过证书验证)import java.net.SocketAddress;
[转]java 关于httpclient 请求https (如何绕过证书验证)import java.net.URI;
[转]java 关于httpclient 请求https (如何绕过证书验证)import java.net.URISyntaxException;
[转]java 关于httpclient 请求https (如何绕过证书验证)import java.net.URL;
[转]java 关于httpclient 请求https (如何绕过证书验证)import java.net.URLConnection;
[转]java 关于httpclient 请求https (如何绕过证书验证)import java.net.URLEncoder;
[转]java 关于httpclient 请求https (如何绕过证书验证)import java.net.UnknownHostException;
[转]java 关于httpclient 请求https (如何绕过证书验证)import java.security.KeyManagementException;
[转]java 关于httpclient 请求https (如何绕过证书验证)import java.security.NoSuchAlgorithmException;
[转]java 关于httpclient 请求https (如何绕过证书验证)import java.security.cert.CertificateException;
[转]java 关于httpclient 请求https (如何绕过证书验证)import java.security.cert.X509Certificate;
[转]java 关于httpclient 请求https (如何绕过证书验证)
[转]java 关于httpclient 请求https (如何绕过证书验证)
[转]java 关于httpclient 请求https (如何绕过证书验证)import javax.net.SocketFactory;
[转]java 关于httpclient 请求https (如何绕过证书验证)import javax.net.ssl.HostnameVerifier;
[转]java 关于httpclient 请求https (如何绕过证书验证)import javax.net.ssl.HttpsURLConnection;
[转]java 关于httpclient 请求https (如何绕过证书验证)import javax.net.ssl.SSLContext;
[转]java 关于httpclient 请求https (如何绕过证书验证)import javax.net.ssl.SSLSession;
[转]java 关于httpclient 请求https (如何绕过证书验证)import javax.net.ssl.TrustManager;
[转]java 关于httpclient 请求https (如何绕过证书验证)import javax.net.ssl.X509TrustManager;
[转]java 关于httpclient 请求https (如何绕过证书验证)
[转]java 关于httpclient 请求https (如何绕过证书验证)
[转]java 关于httpclient 请求https (如何绕过证书验证)import org.apache.http.HttpEntity;
[转]java 关于httpclient 请求https (如何绕过证书验证)import org.apache.http.HttpResponse;
[转]java 关于httpclient 请求https (如何绕过证书验证)import org.apache.http.client.ClientProtocolException;
[转]java 关于httpclient 请求https (如何绕过证书验证)import org.apache.http.client.HttpClient;
[转]java 关于httpclient 请求https (如何绕过证书验证)import org.apache.http.client.methods.HttpGet;
[转]java 关于httpclient 请求https (如何绕过证书验证)import org.apache.http.client.methods.HttpPost;
[转]java 关于httpclient 请求https (如何绕过证书验证)import org.apache.http.conn.ClientConnectionManager;
[转]java 关于httpclient 请求https (如何绕过证书验证)import org.apache.http.conn.ConnectTimeoutException;
[转]java 关于httpclient 请求https (如何绕过证书验证)import org.apache.http.conn.scheme.HostNameResolver;
[转]java 关于httpclient 请求https (如何绕过证书验证)import org.apache.http.conn.scheme.Scheme;
[转]java 关于httpclient 请求https (如何绕过证书验证)import org.apache.http.conn.scheme.SchemeRegistry;
[转]java 关于httpclient 请求https (如何绕过证书验证)import org.apache.http.conn.ssl.SSLSocketFactory;
[转]java 关于httpclient 请求https (如何绕过证书验证)import org.apache.http.entity.StringEntity;
[转]java 关于httpclient 请求https (如何绕过证书验证)import org.apache.http.impl.client.DefaultHttpClient;
[转]java 关于httpclient 请求https (如何绕过证书验证)import org.apache.http.params.HttpConnectionParams;
[转]java 关于httpclient 请求https (如何绕过证书验证)import org.apache.http.protocol.HTTP;
[转]java 关于httpclient 请求https (如何绕过证书验证)import org.apache.http.util.EntityUtils;
[转]java 关于httpclient 请求https (如何绕过证书验证)
[转]java 关于httpclient 请求https (如何绕过证书验证)
[转]java 关于httpclient 请求https (如何绕过证书验证)/*
[转]java 关于httpclient 请求https (如何绕过证书验证) * [转]java 关于httpclient 请求https (如何绕过证书验证) * 
[转]java 关于httpclient 请求https (如何绕过证书验证) */
[转]java 关于httpclient 请求https (如何绕过证书验证)public class HttpClientSendPost {
[转]java 关于httpclient 请求https (如何绕过证书验证)private static DefaultHttpClient client;
[转]java 关于httpclient 请求https (如何绕过证书验证) /** 
[转]java 关于httpclient 请求https (如何绕过证书验证)     * 访问https的网站 
[转]java 关于httpclient 请求https (如何绕过证书验证)     * @param httpclient 
[转]java 关于httpclient 请求https (如何绕过证书验证)     */  
[转]java 关于httpclient 请求https (如何绕过证书验证)    private static void enableSSL(DefaultHttpClient httpclient){  
[转]java 关于httpclient 请求https (如何绕过证书验证)        //调用ssl  
[转]java 关于httpclient 请求https (如何绕过证书验证)         try {  
[转]java 关于httpclient 请求https (如何绕过证书验证)                SSLContext sslcontext = SSLContext.getInstance("TLS");  
[转]java 关于httpclient 请求https (如何绕过证书验证)                sslcontext.init(null, new TrustManager[] { truseAllManager }, null);  
[转]java 关于httpclient 请求https (如何绕过证书验证)                SSLSocketFactory sf = new SSLSocketFactory(sslcontext);  
[转]java 关于httpclient 请求https (如何绕过证书验证)                sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);  
[转]java 关于httpclient 请求https (如何绕过证书验证)                Scheme https = new Scheme("https", sf, 443);  
[转]java 关于httpclient 请求https (如何绕过证书验证)                httpclient.getConnectionManager().getSchemeRegistry().register(https);  
[转]java 关于httpclient 请求https (如何绕过证书验证)            } catch (Exception e) {  
[转]java 关于httpclient 请求https (如何绕过证书验证)                e.printStackTrace();  
[转]java 关于httpclient 请求https (如何绕过证书验证)            }  
[转]java 关于httpclient 请求https (如何绕过证书验证)    }  
[转]java 关于httpclient 请求https (如何绕过证书验证)    /** 
[转]java 关于httpclient 请求https (如何绕过证书验证)     * 重写验证方法,取消检测ssl 
[转]java 关于httpclient 请求https (如何绕过证书验证)     */  
[转]java 关于httpclient 请求https (如何绕过证书验证)    private static TrustManager truseAllManager = new X509TrustManager(){  
[转]java 关于httpclient 请求https (如何绕过证书验证)  
[转]java 关于httpclient 请求https (如何绕过证书验证)        public void checkClientTrusted(  
[转]java 关于httpclient 请求https (如何绕过证书验证)                java.security.cert.X509Certificate[] arg0, String arg1)  
[转]java 关于httpclient 请求https (如何绕过证书验证)                throws CertificateException {  
[转]java 关于httpclient 请求https (如何绕过证书验证)            // TODO Auto-generated method stub  
[转]java 关于httpclient 请求https (如何绕过证书验证)              
[转]java 关于httpclient 请求https (如何绕过证书验证)        }  
[转]java 关于httpclient 请求https (如何绕过证书验证)  
[转]java 关于httpclient 请求https (如何绕过证书验证)        public void checkServerTrusted(  
[转]java 关于httpclient 请求https (如何绕过证书验证)                java.security.cert.X509Certificate[] arg0, String arg1)  
[转]java 关于httpclient 请求https (如何绕过证书验证)                throws CertificateException {  
[转]java 关于httpclient 请求https (如何绕过证书验证)            // TODO Auto-generated method stub  
[转]java 关于httpclient 请求https (如何绕过证书验证)              
[转]java 关于httpclient 请求https (如何绕过证书验证)        }  
[转]java 关于httpclient 请求https (如何绕过证书验证)  
[转]java 关于httpclient 请求https (如何绕过证书验证)        public java.security.cert.X509Certificate[] getAcceptedIssuers() {  
[转]java 关于httpclient 请求https (如何绕过证书验证)            // TODO Auto-generated method stub  
[转]java 关于httpclient 请求https (如何绕过证书验证)            return null;  
[转]java 关于httpclient 请求https (如何绕过证书验证)        }  
[转]java 关于httpclient 请求https (如何绕过证书验证)          
[转]java 关于httpclient 请求https (如何绕过证书验证)    }; 
[转]java 关于httpclient 请求https (如何绕过证书验证)/**
[转]java 关于httpclient 请求https (如何绕过证书验证)* HTTP Client Object,used HttpClient Class before(version 3.x),but now the
[转]java 关于httpclient 请求https (如何绕过证书验证)* HttpClient is an interface
[转]java 关于httpclient 请求https (如何绕过证书验证)*/
[转]java 关于httpclient 请求https (如何绕过证书验证)
[转]java 关于httpclient 请求https (如何绕过证书验证)
[转]java 关于httpclient 请求https (如何绕过证书验证)public static String sendXMLDataByGet(String url,String xml){
[转]java 关于httpclient 请求https (如何绕过证书验证)   // 创建HttpClient实例     
[转]java 关于httpclient 请求https (如何绕过证书验证)        if (client == null) {
[转]java 关于httpclient 请求https (如何绕过证书验证)// Create HttpClient Object
[转]java 关于httpclient 请求https (如何绕过证书验证)client = new DefaultHttpClient();
[转]java 关于httpclient 请求https (如何绕过证书验证)enableSSL(client);
[转]java 关于httpclient 请求https (如何绕过证书验证)}
[转]java 关于httpclient 请求https (如何绕过证书验证)        StringBuilder urlString=new StringBuilder();
[转]java 关于httpclient 请求https (如何绕过证书验证)        urlString.append(url);
[转]java 关于httpclient 请求https (如何绕过证书验证)        urlString.append("?");
[转]java 关于httpclient 请求https (如何绕过证书验证)        System.out.println("getUTF8XMLString(xml):"+getUTF8XMLString(xml));
[转]java 关于httpclient 请求https (如何绕过证书验证)        try {
[转]java 关于httpclient 请求https (如何绕过证书验证)urlString.append(URLEncoder.encode( getUTF8XMLString(xml) , "UTF-8" ));
[转]java 关于httpclient 请求https (如何绕过证书验证)} catch (UnsupportedEncodingException e2) {
[转]java 关于httpclient 请求https (如何绕过证书验证)// TODO Auto-generated catch block
[转]java 关于httpclient 请求https (如何绕过证书验证)e2.printStackTrace();
[转]java 关于httpclient 请求https (如何绕过证书验证)}
[转]java 关于httpclient 请求https (如何绕过证书验证)        String urlReq=urlString.toString();
[转]java 关于httpclient 请求https (如何绕过证书验证)        // 创建Get方法实例     
[转]java 关于httpclient 请求https (如何绕过证书验证)        HttpGet httpsgets = new HttpGet(urlReq);
[转]java 关于httpclient 请求https (如何绕过证书验证)
[转]java 关于httpclient 请求https (如何绕过证书验证)        String strRep="";
[转]java 关于httpclient 请求https (如何绕过证书验证)try {
[转]java 关于httpclient 请求https (如何绕过证书验证)HttpResponse response = client.execute(httpsgets);    
[转]java 关于httpclient 请求https (如何绕过证书验证)HttpEntity entity = response.getEntity(); 
[转]java 关于httpclient 请求https (如何绕过证书验证)
[转]java 关于httpclient 请求https (如何绕过证书验证)if (entity != null) { 
[转]java 关于httpclient 请求https (如何绕过证书验证)strRep = EntityUtils.toString(response.getEntity());
[转]java 关于httpclient 请求https (如何绕过证书验证)   // Do not need the rest    
[转]java 关于httpclient 请求https (如何绕过证书验证)   httpsgets.abort();    
[转]java 关于httpclient 请求https (如何绕过证书验证)}
[转]java 关于httpclient 请求https (如何绕过证书验证)} catch (ClientProtocolException e) {
[转]java 关于httpclient 请求https (如何绕过证书验证)// TODO Auto-generated catch block
[转]java 关于httpclient 请求https (如何绕过证书验证)e.printStackTrace();
[转]java 关于httpclient 请求https (如何绕过证书验证)} catch (IllegalStateException e) {
[转]java 关于httpclient 请求https (如何绕过证书验证)// TODO Auto-generated catch block
[转]java 关于httpclient 请求https (如何绕过证书验证)e.printStackTrace();
[转]java 关于httpclient 请求https (如何绕过证书验证)} catch (IOException e) {
[转]java 关于httpclient 请求https (如何绕过证书验证)// TODO Auto-generated catch block
[转]java 关于httpclient 请求https (如何绕过证书验证)e.printStackTrace();
[转]java 关于httpclient 请求https (如何绕过证书验证)}  
[转]java 关于httpclient 请求https (如何绕过证书验证)        return strRep;
[转]java 关于httpclient 请求https (如何绕过证书验证)    } 
[转]java 关于httpclient 请求https (如何绕过证书验证)
[转]java 关于httpclient 请求https (如何绕过证书验证)
[转]java 关于httpclient 请求https (如何绕过证书验证)/**
[转]java 关于httpclient 请求https (如何绕过证书验证)* Send a XML-Formed string to HTTP Server by post method
[转]java 关于httpclient 请求https (如何绕过证书验证)
[转]java 关于httpclient 请求https (如何绕过证书验证)* @param url
[转]java 关于httpclient 请求https (如何绕过证书验证)*            the request URL string
[转]java 关于httpclient 请求https (如何绕过证书验证)* @param xmlData
[转]java 关于httpclient 请求https (如何绕过证书验证)*            XML-Formed string ,will not check whether this string is
[转]java 关于httpclient 请求https (如何绕过证书验证)*            XML-Formed or not
[转]java 关于httpclient 请求https (如何绕过证书验证)* @return the HTTP response status code ,like 200 represents OK,404 not
[转]java 关于httpclient 请求https (如何绕过证书验证)*         found
[转]java 关于httpclient 请求https (如何绕过证书验证)* @throws IOException
[转]java 关于httpclient 请求https (如何绕过证书验证)* @throws ClientProtocolException
[转]java 关于httpclient 请求https (如何绕过证书验证)*/
[转]java 关于httpclient 请求https (如何绕过证书验证)public static String sendXMLDataByPost(String url, String xmlData)
[转]java 关于httpclient 请求https (如何绕过证书验证)throws ClientProtocolException, IOException {
[转]java 关于httpclient 请求https (如何绕过证书验证)if (client == null) {
[转]java 关于httpclient 请求https (如何绕过证书验证)// Create HttpClient Object
[转]java 关于httpclient 请求https (如何绕过证书验证)client = new DefaultHttpClient();
[转]java 关于httpclient 请求https (如何绕过证书验证)enableSSL(client);
[转]java 关于httpclient 请求https (如何绕过证书验证)}
[转]java 关于httpclient 请求https (如何绕过证书验证)client.getParams().setParameter("http.protocol.content-charset",
[转]java 关于httpclient 请求https (如何绕过证书验证)HTTP.UTF_8);
[转]java 关于httpclient 请求https (如何绕过证书验证)client.getParams().setParameter(HTTP.CONTENT_ENCODING, HTTP.UTF_8);
[转]java 关于httpclient 请求https (如何绕过证书验证)client.getParams().setParameter(HTTP.CHARSET_PARAM, HTTP.UTF_8);
[转]java 关于httpclient 请求https (如何绕过证书验证)client.getParams().setParameter(HTTP.DEFAULT_PROTOCOL_CHARSET,
[转]java 关于httpclient 请求https (如何绕过证书验证)HTTP.UTF_8);
[转]java 关于httpclient 请求https (如何绕过证书验证)
[转]java 关于httpclient 请求https (如何绕过证书验证)// System.out.println(HTTP.UTF_8);
[转]java 关于httpclient 请求https (如何绕过证书验证)// Send data by post method in HTTP protocol,use HttpPost instead of
[转]java 关于httpclient 请求https (如何绕过证书验证)// PostMethod which was occurred in former version
[转]java 关于httpclient 请求https (如何绕过证书验证)// System.out.println(url);
[转]java 关于httpclient 请求https (如何绕过证书验证)HttpPost post = new HttpPost(url);
[转]java 关于httpclient 请求https (如何绕过证书验证)post.getParams().setParameter("http.protocol.content-charset",
[转]java 关于httpclient 请求https (如何绕过证书验证)HTTP.UTF_8);
[转]java 关于httpclient 请求https (如何绕过证书验证)post.getParams().setParameter(HTTP.CONTENT_ENCODING, HTTP.UTF_8);
[转]java 关于httpclient 请求https (如何绕过证书验证)post.getParams().setParameter(HTTP.CHARSET_PARAM, HTTP.UTF_8);
[转]java 关于httpclient 请求https (如何绕过证书验证)post.getParams()
[转]java 关于httpclient 请求https (如何绕过证书验证).setParameter(HTTP.DEFAULT_PROTOCOL_CHARSET, HTTP.UTF_8);
[转]java 关于httpclient 请求https (如何绕过证书验证)
[转]java 关于httpclient 请求https (如何绕过证书验证)
[转]java 关于httpclient 请求https (如何绕过证书验证)// Construct a string entity
[转]java 关于httpclient 请求https (如何绕过证书验证)StringEntity entity = new StringEntity(getUTF8XMLString(xmlData), "UTF-8");
[转]java 关于httpclient 请求https (如何绕过证书验证)entity.setContentType("text/xml;charset=UTF-8");
[转]java 关于httpclient 请求https (如何绕过证书验证)entity.setContentEncoding("UTF-8");
[转]java 关于httpclient 请求https (如何绕过证书验证)// Set XML entity
[转]java 关于httpclient 请求https (如何绕过证书验证)post.setEntity(entity);
[转]java 关于httpclient 请求https (如何绕过证书验证)// Set content type of request header
[转]java 关于httpclient 请求https (如何绕过证书验证)post.setHeader("Content-Type", "text/xml;charset=UTF-8");
[转]java 关于httpclient 请求https (如何绕过证书验证)// Execute request and get the response
[转]java 关于httpclient 请求https (如何绕过证书验证)HttpResponse response = client.execute(post);
[转]java 关于httpclient 请求https (如何绕过证书验证)HttpEntity entityRep = response.getEntity(); 
[转]java 关于httpclient 请求https (如何绕过证书验证)String strrep="";
[转]java 关于httpclient 请求https (如何绕过证书验证)        if (entityRep != null) {     
[转]java 关于httpclient 请求https (如何绕过证书验证)            strrep = EntityUtils.toString(response.getEntity());
[转]java 关于httpclient 请求https (如何绕过证书验证)            // Do not need the rest    
[转]java 关于httpclient 请求https (如何绕过证书验证)            post.abort();    
[转]java 关于httpclient 请求https (如何绕过证书验证)        }  
[转]java 关于httpclient 请求https (如何绕过证书验证)// Response Header - StatusLine - status code
[转]java 关于httpclient 请求https (如何绕过证书验证)// statusCode = response.getStatusLine().getStatusCode();
[转]java 关于httpclient 请求https (如何绕过证书验证)return strrep;
[转]java 关于httpclient 请求https (如何绕过证书验证)}
[转]java 关于httpclient 请求https (如何绕过证书验证)/**
[转]java 关于httpclient 请求https (如何绕过证书验证)* Get XML String of utf-8
[转]java 关于httpclient 请求https (如何绕过证书验证)
[转]java 关于httpclient 请求https (如何绕过证书验证)* @return XML-Formed string
[转]java 关于httpclient 请求https (如何绕过证书验证)*/
[转]java 关于httpclient 请求https (如何绕过证书验证)public static String getUTF8XMLString(String xml) {
[转]java 关于httpclient 请求https (如何绕过证书验证)// A StringBuffer Object
[转]java 关于httpclient 请求https (如何绕过证书验证)StringBuffer sb = new StringBuffer();
[转]java 关于httpclient 请求https (如何绕过证书验证)sb.append(xml);
[转]java 关于httpclient 请求https (如何绕过证书验证)String xmString = "";
[转]java 关于httpclient 请求https (如何绕过证书验证)try {
[转]java 关于httpclient 请求https (如何绕过证书验证)xmString = new String(sb.toString().getBytes("UTF-8"));
[转]java 关于httpclient 请求https (如何绕过证书验证)} catch (UnsupportedEncodingException e) {
[转]java 关于httpclient 请求https (如何绕过证书验证)// TODO Auto-generated catch block
[转]java 关于httpclient 请求https (如何绕过证书验证)e.printStackTrace();
[转]java 关于httpclient 请求https (如何绕过证书验证)}
[转]java 关于httpclient 请求https (如何绕过证书验证)// return to String Formed
[转]java 关于httpclient 请求https (如何绕过证书验证)return xmString.toString();
[转]java 关于httpclient 请求https (如何绕过证书验证)}
[转]java 关于httpclient 请求https (如何绕过证书验证)}

第二种仿http的不用HttpClient 都是jdk自带的包

[转]java 关于httpclient 请求https (如何绕过证书验证)package org.sp.sc.util;
[转]java 关于httpclient 请求https (如何绕过证书验证)
[转]java 关于httpclient 请求https (如何绕过证书验证)
[转]java 关于httpclient 请求https (如何绕过证书验证)import java.io.ByteArrayOutputStream;
[转]java 关于httpclient 请求https (如何绕过证书验证)import java.io.InputStream;
[转]java 关于httpclient 请求https (如何绕过证书验证)import java.net.URL;
[转]java 关于httpclient 请求https (如何绕过证书验证)import java.security.cert.CertificateException;
[转]java 关于httpclient 请求https (如何绕过证书验证)import java.security.cert.X509Certificate;
[转]java 关于httpclient 请求https (如何绕过证书验证)
[转]java 关于httpclient 请求https (如何绕过证书验证)
[转]java 关于httpclient 请求https (如何绕过证书验证)import javax.net.ssl.HostnameVerifier;
[转]java 关于httpclient 请求https (如何绕过证书验证)import javax.net.ssl.HttpsURLConnection;
[转]java 关于httpclient 请求https (如何绕过证书验证)import javax.net.ssl.SSLContext;
[转]java 关于httpclient 请求https (如何绕过证书验证)import javax.net.ssl.SSLSession;
[转]java 关于httpclient 请求https (如何绕过证书验证)import javax.net.ssl.SSLSocketFactory;
[转]java 关于httpclient 请求https (如何绕过证书验证)import javax.net.ssl.TrustManager;
[转]java 关于httpclient 请求https (如何绕过证书验证)import javax.net.ssl.X509TrustManager;
[转]java 关于httpclient 请求https (如何绕过证书验证)
[转]java 关于httpclient 请求https (如何绕过证书验证)
[转]java 关于httpclient 请求https (如何绕过证书验证)   /**
[转]java 关于httpclient 请求https (如何绕过证书验证)     * 无视Https证书是否正确的Java Http Client
[转]java 关于httpclient 请求https (如何绕过证书验证)     * 
[转]java 关于httpclient 请求https (如何绕过证书验证)     * 
[转]java 关于httpclient 请求https (如何绕过证书验证)     * @author huangxuebin
[转]java 关于httpclient 请求https (如何绕过证书验证)     *
[转]java 关于httpclient 请求https (如何绕过证书验证)     * @create 2012.8.17
[转]java 关于httpclient 请求https (如何绕过证书验证)     * @version 1.0
[转]java 关于httpclient 请求https (如何绕过证书验证)     */
[转]java 关于httpclient 请求https (如何绕过证书验证)public class HttpsUtil {
[转]java 关于httpclient 请求https (如何绕过证书验证)
[转]java 关于httpclient 请求https (如何绕过证书验证)
[转]java 关于httpclient 请求https (如何绕过证书验证)    /**
[转]java 关于httpclient 请求https (如何绕过证书验证)     * 忽视证书HostName
[转]java 关于httpclient 请求https (如何绕过证书验证)     */
[转]java 关于httpclient 请求https (如何绕过证书验证)    private static HostnameVerifier ignoreHostnameVerifier = new HostnameVerifier() {
[转]java 关于httpclient 请求https (如何绕过证书验证)        public boolean verify(String s, SSLSession sslsession) {
[转]java 关于httpclient 请求https (如何绕过证书验证)            System.out.println("WARNING: Hostname is not matched for cert.");
[转]java 关于httpclient 请求https (如何绕过证书验证)            return true;
[转]java 关于httpclient 请求https (如何绕过证书验证)        }
[转]java 关于httpclient 请求https (如何绕过证书验证)    }
[转]java 关于httpclient 请求https (如何绕过证书验证)
[转]java 关于httpclient 请求https (如何绕过证书验证)     /**
[转]java 关于httpclient 请求https (如何绕过证书验证)     * Ignore Certification
[转]java 关于httpclient 请求https (如何绕过证书验证)     */
[转]java 关于httpclient 请求https (如何绕过证书验证)    private static TrustManager ignoreCertificationTrustManger = new X509TrustManager() {
[转]java 关于httpclient 请求https (如何绕过证书验证)
[转]java 关于httpclient 请求https (如何绕过证书验证)[转]java 关于httpclient 请求https (如何绕过证书验证)        private X509Certificate[] certificates;
[转]java 关于httpclient 请求https (如何绕过证书验证)[转]java 关于httpclient 请求https (如何绕过证书验证)
[转]java 关于httpclient 请求https (如何绕过证书验证)        @Override
[转]java 关于httpclient 请求https (如何绕过证书验证)        public void checkClientTrusted(X509Certificate certificates[],
[转]java 关于httpclient 请求https (如何绕过证书验证)                String authType) throws CertificateException {
[转]java 关于httpclient 请求https (如何绕过证书验证)            if (this.certificates == null) {
[转]java 关于httpclient 请求https (如何绕过证书验证)                this.certificates = certificates;
[转]java 关于httpclient 请求https (如何绕过证书验证)                System.out.println("init at checkClientTrusted");
[转]java 关于httpclient 请求https (如何绕过证书验证)            }
[转]java 关于httpclient 请求https (如何绕过证书验证)        }
[转]java 关于httpclient 请求https (如何绕过证书验证)
[转]java 关于httpclient 请求https (如何绕过证书验证)
[转]java 关于httpclient 请求https (如何绕过证书验证)        @Override
[转]java 关于httpclient 请求https (如何绕过证书验证)        public void checkServerTrusted(X509Certificate[] ax509certificate,
[转]java 关于httpclient 请求https (如何绕过证书验证)                String s) throws CertificateException {
[转]java 关于httpclient 请求https (如何绕过证书验证)            if (this.certificates == null) {
[转]java 关于httpclient 请求https (如何绕过证书验证)                this.certificates = ax509certificate;
[转]java 关于httpclient 请求https (如何绕过证书验证)                System.out.println("init at checkServerTrusted");
[转]java 关于httpclient 请求https (如何绕过证书验证)            }[转]java 关于httpclient 请求https (如何绕过证书验证)
[转]java 关于httpclient 请求https (如何绕过证书验证)//            for (int c = 0; c < certificates.length; c++) {
[转]java 关于httpclient 请求https (如何绕过证书验证)//                X509Certificate cert = certificates[c];
[转]java 关于httpclient 请求https (如何绕过证书验证)//                System.out.println(" Server certificate " + (c + 1) + ":");
[转]java 关于httpclient 请求https (如何绕过证书验证)//                System.out.println("  Subject DN: " + cert.getSubjectDN());
[转]java 关于httpclient 请求https (如何绕过证书验证)//                System.out.println("  Signature Algorithm: "
[转]java 关于httpclient 请求https (如何绕过证书验证)//                        + cert.getSigAlgName());
[转]java 关于httpclient 请求https (如何绕过证书验证)//                System.out.println("  Valid from: " + cert.getNotBefore());
[转]java 关于httpclient 请求https (如何绕过证书验证)//                System.out.println("  Valid until: " + cert.getNotAfter());
[转]java 关于httpclient 请求https (如何绕过证书验证)//                System.out.println("  Issuer: " + cert.getIssuerDN());
[转]java 关于httpclient 请求https (如何绕过证书验证)//            }
[转]java 关于httpclient 请求https (如何绕过证书验证)[转]java 关于httpclient 请求https (如何绕过证书验证)
[转]java 关于httpclient 请求https (如何绕过证书验证)        }
[转]java 关于httpclient 请求https (如何绕过证书验证)
[转]java 关于httpclient 请求https (如何绕过证书验证)
[转]java 关于httpclient 请求https (如何绕过证书验证)        @Override
[转]java 关于httpclient 请求https (如何绕过证书验证)        public X509Certificate[] getAcceptedIssuers() {
[转]java 关于httpclient 请求https (如何绕过证书验证)            // TODO Auto-generated method stub
[转]java 关于httpclient 请求https (如何绕过证书验证)            return null;
[转]java 关于httpclient 请求https (如何绕过证书验证)        }
[转]java 关于httpclient 请求https (如何绕过证书验证)[转]java 关于httpclient 请求https (如何绕过证书验证)    };
[转]java 关于httpclient 请求https (如何绕过证书验证)
[转]java 关于httpclient 请求https (如何绕过证书验证)
[转]java 关于httpclient 请求https (如何绕过证书验证)    public static String getMethod(String urlString) {
[转]java 关于httpclient 请求https (如何绕过证书验证)
[转]java 关于httpclient 请求https (如何绕过证书验证)[转]java 关于httpclient 请求https (如何绕过证书验证)        ByteArrayOutputStream buffer = new ByteArrayOutputStream(512);
[转]java 关于httpclient 请求https (如何绕过证书验证)        try {
[转]java 关于httpclient 请求https (如何绕过证书验证)[转]java 关于httpclient 请求https (如何绕过证书验证)            URL url = new URL(urlString);
[转]java 关于httpclient 请求https (如何绕过证书验证)[转]java 关于httpclient 请求https (如何绕过证书验证)            /*
[转]java 关于httpclient 请求https (如何绕过证书验证)             * use ignore host name verifier
[转]java 关于httpclient 请求https (如何绕过证书验证)             */
[转]java 关于httpclient 请求https (如何绕过证书验证)            HttpsURLConnection.setDefaultHostnameVerifier(ignoreHostnameVerifier);
[转]java 关于httpclient 请求https (如何绕过证书验证)            HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
[转]java 关于httpclient 请求https (如何绕过证书验证)
[转]java 关于httpclient 请求https (如何绕过证书验证)
[转]java 关于httpclient 请求https (如何绕过证书验证)            // Prepare SSL Context
[转]java 关于httpclient 请求https (如何绕过证书验证)            TrustManager[] tm = { ignoreCertificationTrustManger };
[转]java 关于httpclient 请求https (如何绕过证书验证)            SSLContext sslContext = SSLContext.getInstance("SSL", "SunJSSE");
[转]java 关于httpclient 请求https (如何绕过证书验证)            sslContext.init(null, tm, new java.security.SecureRandom());
[转]java 关于httpclient 请求https (如何绕过证书验证)
[转]java 关于httpclient 请求https (如何绕过证书验证)
[转]java 关于httpclient 请求https (如何绕过证书验证)            // 从上述SSLContext对象中得到SSLSocketFactory对象
[转]java 关于httpclient 请求https (如何绕过证书验证)            SSLSocketFactory ssf = sslContext.getSocketFactory();
[转]java 关于httpclient 请求https (如何绕过证书验证)            connection.setSSLSocketFactory(ssf);
[转]java 关于httpclient 请求https (如何绕过证书验证)            
[转]java 关于httpclient 请求https (如何绕过证书验证)            InputStream reader = connection.getInputStream();
[转]java 关于httpclient 请求https (如何绕过证书验证)            byte[] bytes = new byte[512];
[转]java 关于httpclient 请求https (如何绕过证书验证)            int length = reader.read(bytes);
[转]java 关于httpclient 请求https (如何绕过证书验证)
[转]java 关于httpclient 请求https (如何绕过证书验证)
[转]java 关于httpclient 请求https (如何绕过证书验证)            do {
[转]java 关于httpclient 请求https (如何绕过证书验证)                buffer.write(bytes, 0, length);
[转]java 关于httpclient 请求https (如何绕过证书验证)                length = reader.read(bytes);
[转]java 关于httpclient 请求https (如何绕过证书验证)            } while (length > 0);
[转]java 关于httpclient 请求https (如何绕过证书验证)
[转]java 关于httpclient 请求https (如何绕过证书验证)
[转]java 关于httpclient 请求https (如何绕过证书验证)            // result.setResponseData(bytes);
[转]java 关于httpclient 请求https (如何绕过证书验证)            System.out.println(buffer.toString());
[转]java 关于httpclient 请求https (如何绕过证书验证)            reader.close();
[转]java 关于httpclient 请求https (如何绕过证书验证)            
[转]java 关于httpclient 请求https (如何绕过证书验证)            connection.disconnect();
[转]java 关于httpclient 请求https (如何绕过证书验证)        } catch (Exception ex) {
[转]java 关于httpclient 请求https (如何绕过证书验证)            ex.printStackTrace();
[转]java 关于httpclient 请求https (如何绕过证书验证)        } finally {
[转]java 关于httpclient 请求https (如何绕过证书验证)        }
[转]java 关于httpclient 请求https (如何绕过证书验证)        String repString= new String (buffer.toByteArray());
[转]java 关于httpclient 请求https (如何绕过证书验证)        return repString;
[转]java 关于httpclient 请求https (如何绕过证书验证)    }
[转]java 关于httpclient 请求https (如何绕过证书验证)
[转]java 关于httpclient 请求https (如何绕过证书验证)
[转]java 关于httpclient 请求https (如何绕过证书验证)//    public static void main(String[] args) {
[转]java 关于httpclient 请求https (如何绕过证书验证)//        String urlString = "https://218.202.0.241:8081/XMLReceiver";
[转]java 关于httpclient 请求https (如何绕过证书验证)//        String output = new String(HttpsUtil.getMethod(urlString));
[转]java 关于httpclient 请求https (如何绕过证书验证)//        System.out.println(output);
[转]java 关于httpclient 请求https (如何绕过证书验证)//    }
[转]java 关于httpclient 请求https (如何绕过证书验证)}