Class HttpUrlConnector

    • Field Detail

      • LOGGER

        private static final java.util.logging.Logger LOGGER
      • ALLOW_RESTRICTED_HEADERS_SYSTEM_PROPERTY

        private static final java.lang.String ALLOW_RESTRICTED_HEADERS_SYSTEM_PROPERTY
        See Also:
        Constant Field Values
      • restrictedHeaders

        private static final java.lang.String[] restrictedHeaders
      • restrictedHeaderSet

        private static final java.util.Set<java.lang.String> restrictedHeaderSet
      • chunkSize

        private final int chunkSize
      • fixLengthStreaming

        private final boolean fixLengthStreaming
      • setMethodWorkaround

        private final boolean setMethodWorkaround
      • isRestrictedHeaderPropertySet

        private final boolean isRestrictedHeaderPropertySet
      • sslSocketFactory

        private final LazyValue<javax.net.ssl.SSLSocketFactory> sslSocketFactory
    • Constructor Detail

      • HttpUrlConnector

        public HttpUrlConnector​(javax.ws.rs.client.Client client,
                                HttpUrlConnectorProvider.ConnectionFactory connectionFactory,
                                int chunkSize,
                                boolean fixLengthStreaming,
                                boolean setMethodWorkaround)
        Create new HttpUrlConnector instance.
        Parameters:
        client - JAX-RS client instance for which the connector is being created.
        connectionFactory - HttpsURLConnection factory to be used when creating connections.
        chunkSize - chunk size to use when using HTTP chunked transfer coding.
        fixLengthStreaming - specify if the the fixed-length streaming mode on the underlying HTTP URL connection instances should be used when sending requests.
        setMethodWorkaround - specify if the reflection workaround should be used to set HTTP URL connection method name. See HttpUrlConnectorProvider.SET_METHOD_WORKAROUND for details.
    • Method Detail

      • getInputStream

        private static java.io.InputStream getInputStream​(java.net.HttpURLConnection uc)
                                                   throws java.io.IOException
        Throws:
        java.io.IOException
      • apply

        public ClientResponse apply​(ClientRequest request)
        Description copied from interface: Connector
        Synchronously process client request into a response. The method is used by Jersey client runtime to synchronously send a request and receive a response.
        Specified by:
        apply in interface Connector
        Specified by:
        apply in interface Inflector<ClientRequest,​ClientResponse>
        Parameters:
        request - Jersey client request to be sent.
        Returns:
        Jersey client response received for the client request.
      • apply

        public java.util.concurrent.Future<?> apply​(ClientRequest request,
                                                    AsyncConnectorCallback callback)
        Description copied from interface: Connector
        Asynchronously process client request into a response. The method is used by Jersey client runtime to asynchronously send a request and receive a response.
        Specified by:
        apply in interface Connector
        Parameters:
        request - Jersey client request to be sent.
        callback - Jersey asynchronous connector callback to asynchronously receive the request processing result (either a response or a failure).
        Returns:
        asynchronously executed task handle.
      • close

        public void close()
        Description copied from interface: Connector
        Close connector and release all it's internally associated resources.
        Specified by:
        close in interface Connector
      • secureConnection

        protected void secureConnection​(JerseyClient client,
                                        java.net.HttpURLConnection uc)
        Secure connection if necessary.

        Provided implementation sets HostnameVerifier and SSLSocketFactory to give connection, if that is an instance of HttpsURLConnection.

        Parameters:
        client - client associated with this client runtime.
        uc - http connection to be secured.
      • setOutboundHeaders

        private void setOutboundHeaders​(javax.ws.rs.core.MultivaluedMap<java.lang.String,​java.lang.String> headers,
                                        java.net.HttpURLConnection uc)
      • isHeaderRestricted

        private boolean isHeaderRestricted​(java.lang.String name,
                                           java.lang.String value)
      • setRequestMethodViaJreBugWorkaround

        private static void setRequestMethodViaJreBugWorkaround​(java.net.HttpURLConnection httpURLConnection,
                                                                java.lang.String method)
        Workaround for a bug in HttpURLConnection.setRequestMethod(String) The implementation of Sun/Oracle is throwing a ProtocolException when the method is not in the list of the HTTP/1.1 default methods. This means that to use e.g. PROPFIND and others, we must apply this workaround.

        See issue http://java.net/jira/browse/JERSEY-639

      • getName

        public java.lang.String getName()
        Description copied from interface: Connector
        Get name of current connector. Should contain identification of underlying specification and optionally version number. Will be used in User-Agent header.
        Specified by:
        getName in interface Connector
        Returns:
        name of current connector. Returning null or empty string means not including this information in a generated "User-Agent" header.