Class EasySSLProtocolSocketFactory

  • All Implemented Interfaces:
    org.apache.commons.httpclient.protocol.ProtocolSocketFactory, org.apache.commons.httpclient.protocol.SecureProtocolSocketFactory

    public class EasySSLProtocolSocketFactory
    extends Object
    implements org.apache.commons.httpclient.protocol.SecureProtocolSocketFactory

    EasySSLProtocolSocketFactory can be used to creats SSL Sockets that accept self-signed certificates.

    This socket factory SHOULD NOT be used for productive systems due to security reasons, unless it is a concious decision and you are perfectly aware of security implications of accepting self-signed certificates

    Example of using custom protocol socket factory for a specific host:

         Protocol easyhttps = new Protocol("https", new EasySSLProtocolSocketFactory(), 443);
    
         HttpClient client = new HttpClient();
         client.getHostConfiguration().setHost("localhost", 443, easyhttps);
         // use relative url only
         GetMethod httpget = new GetMethod("/");
         client.executeMethod(httpget);
         

    Example of using custom protocol socket factory per default instead of the standard one:

         Protocol easyhttps = new Protocol("https", new EasySSLProtocolSocketFactory(), 443);
         Protocol.registerProtocol("https", easyhttps);
    
         HttpClient client = new HttpClient();
         GetMethod httpget = new GetMethod("https://localhost/");
         client.executeMethod(httpget);
         

    Author:
    Oleg Kalnichevski

    DISCLAIMER: HttpClient developers DO NOT actively support this component. The component is provided as a reference material, which may be inappropriate for use without additional customization.

    • Constructor Detail

      • EasySSLProtocolSocketFactory

        public EasySSLProtocolSocketFactory()
        Constructor for EasySSLProtocolSocketFactory.
    • Method Detail

      • createSocket

        public Socket createSocket​(String host,
                                   int port,
                                   InetAddress localAddress,
                                   int localPort,
                                   org.apache.commons.httpclient.params.HttpConnectionParams params)
                            throws IOException,
                                   UnknownHostException,
                                   org.apache.commons.httpclient.ConnectTimeoutException
        Attempts to get a new socket connection to the given host within the given time limit.

        To circumvent the limitations of older JREs that do not support connect timeout a controller thread is executed. The controller thread attempts to create a new socket within the given limit of time. If socket constructor does not return until the timeout expires, the controller terminates and throws an ConnectTimeoutException

        Specified by:
        createSocket in interface org.apache.commons.httpclient.protocol.ProtocolSocketFactory
        Parameters:
        host - the host name/IP
        port - the port on the host
        clientHost - the local host name/IP to bind the socket to
        clientPort - the port on the local machine
        params - Http connection parameters
        Returns:
        Socket a new socket
        Throws:
        IOException - if an I/O error occurs while creating the socket
        UnknownHostException - if the IP address of the host cannot be determined
        org.apache.commons.httpclient.ConnectTimeoutException
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object