Class HttpSupport


  • public class HttpSupport
    extends java.lang.Object
    Extra utilities to support usage of HTTP.
    • Field Detail

      • LOG

        private static final org.slf4j.Logger LOG
      • METHOD_GET

        public static final java.lang.String METHOD_GET
        The GET HTTP method.
        See Also:
        Constant Field Values
      • METHOD_HEAD

        public static final java.lang.String METHOD_HEAD
        The HEAD HTTP method.
        Since:
        4.3
        See Also:
        Constant Field Values
      • METHOD_PUT

        public static final java.lang.String METHOD_PUT
        The POST HTTP method.
        Since:
        4.3
        See Also:
        Constant Field Values
      • METHOD_POST

        public static final java.lang.String METHOD_POST
        The POST HTTP method.
        See Also:
        Constant Field Values
      • HDR_CACHE_CONTROL

        public static final java.lang.String HDR_CACHE_CONTROL
        The Cache-Control header.
        See Also:
        Constant Field Values
      • HDR_PRAGMA

        public static final java.lang.String HDR_PRAGMA
        The Pragma header.
        See Also:
        Constant Field Values
      • HDR_USER_AGENT

        public static final java.lang.String HDR_USER_AGENT
        The User-Agent header.
        See Also:
        Constant Field Values
      • HDR_SERVER

        public static final java.lang.String HDR_SERVER
        The Server header.
        Since:
        4.0
        See Also:
        Constant Field Values
      • HDR_DATE

        public static final java.lang.String HDR_DATE
        The Date header.
        See Also:
        Constant Field Values
      • HDR_EXPIRES

        public static final java.lang.String HDR_EXPIRES
        The Expires header.
        See Also:
        Constant Field Values
      • HDR_ETAG

        public static final java.lang.String HDR_ETAG
        The ETag header.
        See Also:
        Constant Field Values
      • HDR_IF_NONE_MATCH

        public static final java.lang.String HDR_IF_NONE_MATCH
        The If-None-Match header.
        See Also:
        Constant Field Values
      • HDR_LAST_MODIFIED

        public static final java.lang.String HDR_LAST_MODIFIED
        The Last-Modified header.
        See Also:
        Constant Field Values
      • HDR_IF_MODIFIED_SINCE

        public static final java.lang.String HDR_IF_MODIFIED_SINCE
        The If-Modified-Since header.
        See Also:
        Constant Field Values
      • HDR_ACCEPT

        public static final java.lang.String HDR_ACCEPT
        The Accept header.
        See Also:
        Constant Field Values
      • HDR_CONTENT_TYPE

        public static final java.lang.String HDR_CONTENT_TYPE
        The Content-Type header.
        See Also:
        Constant Field Values
      • HDR_CONTENT_LENGTH

        public static final java.lang.String HDR_CONTENT_LENGTH
        The Content-Length header.
        See Also:
        Constant Field Values
      • HDR_CONTENT_ENCODING

        public static final java.lang.String HDR_CONTENT_ENCODING
        The Content-Encoding header.
        See Also:
        Constant Field Values
      • HDR_CONTENT_RANGE

        public static final java.lang.String HDR_CONTENT_RANGE
        The Content-Range header.
        See Also:
        Constant Field Values
      • HDR_ACCEPT_RANGES

        public static final java.lang.String HDR_ACCEPT_RANGES
        The Accept-Ranges header.
        See Also:
        Constant Field Values
      • HDR_IF_RANGE

        public static final java.lang.String HDR_IF_RANGE
        The If-Range header.
        See Also:
        Constant Field Values
      • HDR_RANGE

        public static final java.lang.String HDR_RANGE
        The Range header.
        See Also:
        Constant Field Values
      • HDR_ACCEPT_ENCODING

        public static final java.lang.String HDR_ACCEPT_ENCODING
        The Accept-Encoding header.
        See Also:
        Constant Field Values
      • HDR_LOCATION

        public static final java.lang.String HDR_LOCATION
        The Location header.
        Since:
        4.7
        See Also:
        Constant Field Values
      • TEXT_PLAIN

        public static final java.lang.String TEXT_PLAIN
        The standard text/plain MIME type.
        See Also:
        Constant Field Values
      • HDR_AUTHORIZATION

        public static final java.lang.String HDR_AUTHORIZATION
        The Authorization header.
        See Also:
        Constant Field Values
      • HDR_WWW_AUTHENTICATE

        public static final java.lang.String HDR_WWW_AUTHENTICATE
        The WWW-Authenticate header.
        See Also:
        Constant Field Values
      • HDR_COOKIE

        public static final java.lang.String HDR_COOKIE
        The Cookie header.
        Since:
        5.4
        See Also:
        Constant Field Values
      • HDR_SET_COOKIE

        public static final java.lang.String HDR_SET_COOKIE
        The Set-Cookie header.
        Since:
        5.4
        See Also:
        Constant Field Values
      • HDR_SET_COOKIE2

        public static final java.lang.String HDR_SET_COOKIE2
        The Set-Cookie2 header.
        Since:
        5.4
        See Also:
        Constant Field Values
      • configuredHttpsProtocols

        private static java.util.Set<java.lang.String> configuredHttpsProtocols
    • Constructor Detail

      • HttpSupport

        private HttpSupport()
    • Method Detail

      • encode

        public static void encode​(java.lang.StringBuilder urlstr,
                                  java.lang.String key)
        URL encode a value string into an output buffer.
        Parameters:
        urlstr - the output buffer.
        key - value which must be encoded to protected special characters.
      • response

        public static int response​(HttpConnection c)
                            throws java.io.IOException
        Get the HTTP response code from the request.

        Roughly the same as c.getResponseCode() but the ConnectException is translated to be more understandable.

        Parameters:
        c - connection the code should be obtained from.
        Returns:
        r HTTP status code, usually 200 to indicate success. See HttpConnection for other defined constants.
        Throws:
        java.io.IOException - communications error prevented obtaining the response code.
        Since:
        3.3
      • response

        public static int response​(java.net.HttpURLConnection c)
                            throws java.io.IOException
        Get the HTTP response code from the request.

        Roughly the same as c.getResponseCode() but the ConnectException is translated to be more understandable.

        Parameters:
        c - connection the code should be obtained from.
        Returns:
        r HTTP status code, usually 200 to indicate success. See HttpConnection for other defined constants.
        Throws:
        java.io.IOException - communications error prevented obtaining the response code.
      • responseHeader

        public static java.lang.String responseHeader​(HttpConnection c,
                                                      java.lang.String headerName)
                                               throws java.io.IOException
        Extract a HTTP header from the response.
        Parameters:
        c - connection the header should be obtained from.
        headerName - the header name
        Returns:
        the header value
        Throws:
        java.io.IOException - communications error prevented obtaining the header.
        Since:
        4.7
      • proxyFor

        public static java.net.Proxy proxyFor​(java.net.ProxySelector proxySelector,
                                              java.net.URL u)
                                       throws java.net.ConnectException
        Determine the proxy server (if any) needed to obtain a URL.
        Parameters:
        proxySelector - proxy support for the caller.
        u - location of the server caller wants to talk to.
        Returns:
        proxy to communicate with the supplied URL.
        Throws:
        java.net.ConnectException - the proxy could not be computed as the supplied URL could not be read. This failure should never occur.
      • disableSslVerify

        public static void disableSslVerify​(HttpConnection conn)
                                     throws java.io.IOException
        Disable SSL and hostname verification for given HTTP connection
        Parameters:
        conn - a HttpConnection object.
        Throws:
        java.io.IOException
        Since:
        4.3
      • configureTLS

        public static void configureTLS​(javax.net.ssl.SSLSocket socket)
        Enables all supported TLS protocol versions on the socket given. If system property "https.protocols" is set, only protocols specified there are enabled.

        This is primarily a mechanism to deal with using TLS on IBM JDK. IBM JDK returns sockets that support all TLS protocol versions but have only the one specified in the context enabled. Oracle or OpenJDK return sockets that have all available protocols enabled already, up to the one specified.

        SSLContext.getInstance() OpenJDK IDM JDK
        "TLS" Supported: TLSv1, TLSV1.1, TLSv1.2 (+ TLSv1.3)
        Enabled: TLSv1, TLSV1.1, TLSv1.2 (+ TLSv1.3)
        Supported: TLSv1, TLSV1.1, TLSv1.2
        Enabled: TLSv1
        "TLSv1.2" Supported: TLSv1, TLSV1.1, TLSv1.2
        Enabled: TLSv1, TLSV1.1, TLSv1.2
        Supported: TLSv1, TLSV1.1, TLSv1.2
        Enabled: TLSv1.2
        Parameters:
        socket - to configure
        Since:
        5.7
        See Also:
        Behavior of SSLContext.getInstance("TLS") on IBM JDK, Customizing JSSE about https.protocols
      • getConfiguredProtocols

        private static java.util.Set<java.lang.String> getConfiguredProtocols()
      • getProperty

        private static java.lang.String getProperty​(java.lang.String property)
      • scanToken

        public static int scanToken​(java.lang.String header,
                                    int from)
        Scan a RFC 7230 token as it appears in HTTP headers.
        Parameters:
        header - to scan in
        from - index in header to start scanning at
        Returns:
        the index after the token, that is, on the first non-token character or header.length
        Throws:
        java.lang.IndexOutOfBoundsException - if from < 0 or from > header.length()
        Since:
        5.10
        See Also:
        RFC 7230, Appendix B: Collected Grammar; "token" production