7ed55ed3de81f7a27e2341d5a50ecc0ee0c970a3.svn-base 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. package cn.com.goldenwater.dcproj.utils;
  2. import org.apache.commons.httpclient.ConnectTimeoutException;
  3. import org.apache.commons.httpclient.params.HttpConnectionParams;
  4. import org.apache.commons.httpclient.protocol.ProtocolSocketFactory;
  5. import javax.net.SocketFactory;
  6. import javax.net.ssl.SSLContext;
  7. import javax.net.ssl.TrustManager;
  8. import javax.net.ssl.X509TrustManager;
  9. import java.io.IOException;
  10. import java.net.*;
  11. import java.security.KeyManagementException;
  12. import java.security.NoSuchAlgorithmException;
  13. import java.security.cert.CertificateException;
  14. import java.security.cert.X509Certificate;
  15. public class MySSLSocketFactory implements ProtocolSocketFactory {
  16. static {
  17. System.out.println(">>>>in MySSLSocketFactory>>");
  18. }
  19. private SSLContext sslcontext = null;
  20. private SSLContext createSSLContext() {
  21. SSLContext sslcontext = null;
  22. try {
  23. sslcontext = SSLContext.getInstance("SSL");
  24. sslcontext.init(null,
  25. new TrustManager[] { new TrustAnyTrustManager() },
  26. new java.security.SecureRandom());
  27. } catch (NoSuchAlgorithmException e) {
  28. e.printStackTrace();
  29. } catch (KeyManagementException e) {
  30. e.printStackTrace();
  31. }
  32. return sslcontext;
  33. }
  34. private SSLContext getSSLContext() {
  35. if (this.sslcontext == null) {
  36. this.sslcontext = createSSLContext();
  37. }
  38. return this.sslcontext;
  39. }
  40. public Socket createSocket(Socket socket, String host, int port,
  41. boolean autoClose) throws IOException, UnknownHostException {
  42. return getSSLContext().getSocketFactory().createSocket(socket, host,
  43. port, autoClose);
  44. }
  45. @Override
  46. public Socket createSocket(String host, int port) throws IOException,
  47. UnknownHostException {
  48. return getSSLContext().getSocketFactory().createSocket(host, port);
  49. }
  50. @Override
  51. public Socket createSocket(String host, int port, InetAddress clientHost,
  52. int clientPort) throws IOException, UnknownHostException {
  53. return getSSLContext().getSocketFactory().createSocket(host, port,
  54. clientHost, clientPort);
  55. }
  56. @Override
  57. public Socket createSocket(String host, int port, InetAddress localAddress,
  58. int localPort, HttpConnectionParams params) throws IOException,
  59. UnknownHostException, ConnectTimeoutException {
  60. if (params == null) {
  61. throw new IllegalArgumentException("Parameters may not be null");
  62. }
  63. int timeout = params.getConnectionTimeout();
  64. SocketFactory socketfactory = getSSLContext().getSocketFactory();
  65. if (timeout == 0) {
  66. return socketfactory.createSocket(host, port, localAddress,
  67. localPort);
  68. } else {
  69. Socket socket = socketfactory.createSocket();
  70. SocketAddress localaddr = new InetSocketAddress(localAddress,
  71. localPort);
  72. SocketAddress remoteaddr = new InetSocketAddress(host, port);
  73. socket.bind(localaddr);
  74. socket.connect(remoteaddr, timeout);
  75. return socket;
  76. }
  77. }
  78. private static class TrustAnyTrustManager implements X509TrustManager {
  79. @Override
  80. public void checkClientTrusted(X509Certificate[] chain, String authType)
  81. throws CertificateException {
  82. }
  83. @Override
  84. public void checkServerTrusted(X509Certificate[] chain, String authType)
  85. throws CertificateException {
  86. }
  87. @Override
  88. public X509Certificate[] getAcceptedIssuers() {
  89. return new X509Certificate[] {};
  90. }
  91. }
  92. }