Class HttpParser


  • public class HttpParser
    extends java.lang.Object
    HTTP header value parser implementation. Parsing HTTP headers as per RFC2616 is not always as simple as it first appears. For headers that only use tokens the simple approach will normally be sufficient. However, for the other headers, while simple code meets 99.9% of cases, there are often some edge cases that make things far more complicated. The purpose of this parser is to let the parser worry about the edge cases. It provides tolerant (where safe to do so) parsing of HTTP header values assuming that wrapped header lines have already been unwrapped. (The Tomcat header processing code does the unwrapping.)
    • Constructor Detail

      • HttpParser

        public HttpParser​(java.lang.String relaxedPathChars,
                          java.lang.String relaxedQueryChars)
    • Method Detail

      • isNotRequestTargetRelaxed

        public boolean isNotRequestTargetRelaxed​(int c)
      • isAbsolutePathRelaxed

        public boolean isAbsolutePathRelaxed​(int c)
      • isQueryRelaxed

        public boolean isQueryRelaxed​(int c)
      • unquote

        public static java.lang.String unquote​(java.lang.String input)
      • isToken

        public static boolean isToken​(int c)
      • isToken

        public static boolean isToken​(java.lang.String s)
        Is the provided String a token as per RFC 7230?
        Note: token = 1 * tchar (RFC 7230)
        Since a token requires at least 1 tchar, null and the empty string ("") are not considered to be valid tokens.
        Parameters:
        s - The string to test
        Returns:
        true if the string is a valid token, otherwise false
      • isHex

        public static boolean isHex​(int c)
      • isNotRequestTarget

        public static boolean isNotRequestTarget​(int c)
      • isHttpProtocol

        public static boolean isHttpProtocol​(int c)
      • isAlpha

        public static boolean isAlpha​(int c)
      • isNumeric

        public static boolean isNumeric​(int c)
      • isUserInfo

        public static boolean isUserInfo​(int c)
      • isAbsolutePath

        public static boolean isAbsolutePath​(int c)
      • isQuery

        public static boolean isQuery​(int c)
      • isControl

        public static boolean isControl​(int c)