zoukankan      html  css  js  c++  java
  • httpClient无证书访问

    1、当不需要使用任何证书访问https网页时,只需配置信任任何证书

    Java代码  收藏代码
    1. HttpClient http = new HttpClient();  
    2. String url = "https://payment.cib.com.cn/payment/api/rest";  
    3. Protocol myhttps = new Protocol("https", new MySSLProtocolSocketFactory(), 443);   
    4. Protocol.registerProtocol("https", myhttps);   
    5. PostMethod post = new PostMethod(url);  

    2、其中信任任何证书的类

    Java代码  收藏代码
    1. import java.io.IOException;  
    2. import java.net.InetAddress;  
    3. import java.net.InetSocketAddress;  
    4. import java.net.Socket;  
    5. import java.net.SocketAddress;  
    6. import java.net.UnknownHostException;  
    7. import java.security.KeyManagementException;  
    8. import java.security.NoSuchAlgorithmException;  
    9. import java.security.cert.CertificateException;  
    10. import java.security.cert.X509Certificate;  
    11.   
    12. import javax.net.SocketFactory;  
    13. import javax.net.ssl.SSLContext;  
    14. import javax.net.ssl.TrustManager;  
    15. import javax.net.ssl.X509TrustManager;  
    16.   
    17. import org.apache.commons.httpclient.ConnectTimeoutException;  
    18. import org.apache.commons.httpclient.params.HttpConnectionParams;  
    19. import org.apache.commons.httpclient.protocol.ProtocolSocketFactory;  
    20.   
    21.   
    22.   
    23. /** 
    24.  * author by lpp 
    25.  * 
    26.  * created at 2010-7-26 上午09:29:33 
    27.  */  
    28. public class MySSLProtocolSocketFactory implements ProtocolSocketFactory {  
    29.   
    30.   private SSLContext sslcontext = null;   
    31.    
    32.   private SSLContext createSSLContext() {   
    33.       SSLContext sslcontext=null;   
    34.       try {   
    35.           sslcontext = SSLContext.getInstance("SSL");   
    36.           sslcontext.init(null, new TrustManager[]{new TrustAnyTrustManager()}, new java.security.SecureRandom());   
    37.       } catch (NoSuchAlgorithmException e) {   
    38.           e.printStackTrace();   
    39.       } catch (KeyManagementException e) {   
    40.           e.printStackTrace();   
    41.       }   
    42.       return sslcontext;   
    43.   }   
    44.    
    45.   private SSLContext getSSLContext() {   
    46.       if (this.sslcontext == null) {   
    47.           this.sslcontext = createSSLContext();   
    48.       }   
    49.       return this.sslcontext;   
    50.   }   
    51.    
    52.   public Socket createSocket(Socket socket, String host, int port, boolean autoClose)   
    53.           throws IOException, UnknownHostException {   
    54.       return getSSLContext().getSocketFactory().createSocket(   
    55.               socket,   
    56.               host,   
    57.               port,   
    58.               autoClose   
    59.           );   
    60.   }   
    61.   
    62.   public Socket createSocket(String host, int port) throws IOException,   
    63.           UnknownHostException {   
    64.       return getSSLContext().getSocketFactory().createSocket(   
    65.               host,   
    66.               port   
    67.           );   
    68.   }   
    69.    
    70.    
    71.   public Socket createSocket(String host, int port, InetAddress clientHost, int clientPort)   
    72.           throws IOException, UnknownHostException {   
    73.       return getSSLContext().getSocketFactory().createSocket(host, port, clientHost, clientPort);   
    74.   }   
    75.   
    76.   public Socket createSocket(String host, int port, InetAddress localAddress,   
    77.           int localPort, HttpConnectionParams params) throws IOException,   
    78.           UnknownHostException, ConnectTimeoutException {   
    79.       if (params == null) {   
    80.           throw new IllegalArgumentException("Parameters may not be null");   
    81.       }   
    82.       int timeout = params.getConnectionTimeout();   
    83.       SocketFactory socketfactory = getSSLContext().getSocketFactory();   
    84.       if (timeout == 0) {   
    85.           return socketfactory.createSocket(host, port, localAddress, localPort);   
    86.       } else {   
    87.           Socket socket = socketfactory.createSocket();   
    88.           SocketAddress localaddr = new InetSocketAddress(localAddress, localPort);   
    89.           SocketAddress remoteaddr = new InetSocketAddress(host, port);   
    90.           socket.bind(localaddr);   
    91.           socket.connect(remoteaddr, timeout);   
    92.           return socket;   
    93.       }   
    94.   }   
    95.    
    96.   //自定义私有类   
    97.   private static class TrustAnyTrustManager implements X509TrustManager {   
    98.       
    99.       public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {   
    100.       }   
    101.   
    102.       public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {   
    103.       }   
    104.   
    105.       public X509Certificate[] getAcceptedIssuers() {   
    106.           return new X509Certificate[]{};   
    107.       }   
    108.   }     
    109.   
    110.   
    111. }  
  • 相关阅读:
    javascript定义类和实例化类
    c# 注册表操作,创建,删除,修改,判断节点是否存在
    asp.net 获得文件属性中的修改时间,获得系统文件属性的方法,最后一次写入时间
    研究“QQ开心农场”一点心得
    c# winform socket网络编程,点对点传输文件,socket文件传输,监听端口
    用C#创建Windows服务(Windows Services)
    c# webform js文件获取客户端控件,后台cs获取前台客户端控件的值,c#和js的交互
    c# asp.net webform web页面打印,可以控制需要打印和不需要打印的位置
    c# asp.net 调用系统设置字体文本框,设置label或页面字体,大小,FontDialog
    c# 计算程序执行时间,计算一段代码执行所用的时间,测试效率
  • 原文地址:https://www.cnblogs.com/Struts-pring/p/4303786.html
Copyright © 2011-2022 走看看