Basic implementation for parsing header values into elements. More...
Instances of this class are stateless and thread-safe. Derived classes are expected to maintain these properties.
The following notice applies to the original API on which this API is based, and to its documentation. The documentation of this API has been revised from the original.
/* * Copyright (C) 2006 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */
Public Member Functions | |
HeaderElement[] | parseElements (final CharArrayBuffer buffer, final ParserCursor cursor) |
Parses a header value into elements. More... | |
HeaderElement | parseHeaderElement (final CharArrayBuffer buffer, final ParserCursor cursor) |
Parses a single header element. More... | |
NameValuePair[] | parseParameters (final CharArrayBuffer buffer, final ParserCursor cursor) |
Parses a list of name-value pairs. More... | |
NameValuePair | parseNameValuePair (final CharArrayBuffer buffer, final ParserCursor cursor) |
Parses a name=value specification, where the = and value are optional. More... | |
Static Public Member Functions | |
static final HeaderElement[] | parseElements (final String value, HeaderValueParser parser) throws ParseException |
Parses elements with the given parser. More... | |
static final HeaderElement | parseHeaderElement (final String value, HeaderValueParser parser) throws ParseException |
Parses an element with the given parser. More... | |
static final NameValuePair[] | parseParameters (final String value, HeaderValueParser parser) throws ParseException |
Parses parameters with the given parser. More... | |
static final NameValuePair | parseNameValuePair (final String value, HeaderValueParser parser) throws ParseException |
Parses a name-value-pair with the given parser. More... | |
Static Public Attributes | |
static final BasicHeaderValueParser | DEFAULT = new BasicHeaderValueParser() |
A default instance of this class, for use as default or fallback. More... | |
Protected Member Functions | |
HeaderElement | createHeaderElement (final String name, final String value, final NameValuePair[] params) |
Creates a header element. More... | |
NameValuePair | createNameValuePair (final String name, final String value) |
Creates a name-value pair. More... | |
|
static |
value | the header value to parse |
parser | the parser to use, or null for default |
null
HeaderElement [] parseElements | ( | final CharArrayBuffer | buffer, |
final ParserCursor | cursor | ||
) |
Parse errors are indicated as RuntimeException
.
Some HTTP headers (such as the set-cookie header) have values that can be decomposed into multiple elements. In order to be processed by this parser, such headers must be in the following form:
header = [ element ] *( "," [ element ] ) element = name [ "=" [ value ] ] *( ";" [ param ] ) param = name [ "=" [ value ] ]
name = token value = ( token | quoted-string )
token = 1*<any char except "=", ",", ";", <"> and white space> quoted-string = <"> *( text | quoted-char ) <"> text = any char except <"> quoted-char = "\" char
Any amount of white space is allowed between any part of the header, element or param and is ignored. A missing value in any element or param will be stored as the empty String; if the "=" is also missing null will be stored instead.
buffer | buffer holding the header value to parse |
cursor | the parser cursor containing the current position and the bounds within the buffer for the parsing operation |
ParseException | in case of a parse error |
Implements HeaderValueParser.
|
static |
value | the header element to parse |
parser | the parser to use, or null for default |
HeaderElement parseHeaderElement | ( | final CharArrayBuffer | buffer, |
final ParserCursor | cursor | ||
) |
A header element consist of a semicolon-separate list of name=value definitions.
buffer | buffer holding the element to parse |
cursor | the parser cursor containing the current position and the bounds within the buffer for the parsing operation |
ParseException | in case of a parse error |
Implements HeaderValueParser.
|
protected |
Called from parseHeaderElement.
|
static |
value | the parameter list to parse |
parser | the parser to use, or null for default |
null
NameValuePair [] parseParameters | ( | final CharArrayBuffer | buffer, |
final ParserCursor | cursor | ||
) |
These lists are used to specify parameters to a header element. Parse errors are indicated as RuntimeException
.
This method comforms to the generic grammar and formatting rules outlined in the Section 2.2 and Section 3.6 of RFC 2616.
The following rules are used throughout this specification to describe basic parsing constructs. The US-ASCII coded character set is defined by ANSI X3.4-1986.
OCTET = <any 8-bit sequence of data> CHAR = <any US-ASCII character (octets 0 - 127)> UPALPHA = <any US-ASCII uppercase letter "A".."Z"> LOALPHA = <any US-ASCII lowercase letter "a".."z"> ALPHA = UPALPHA | LOALPHA DIGIT = <any US-ASCII digit "0".."9"> CTL = <any US-ASCII control character (octets 0 - 31) and DEL (127)> CR = <US-ASCII CR, carriage return (13)> LF = <US-ASCII LF, linefeed (10)> SP = <US-ASCII SP, space (32)> HT = <US-ASCII HT, horizontal-tab (9)> <"> = <US-ASCII double-quote mark (34)>
Many HTTP/1.1 header field values consist of words separated by LWS or special characters. These special characters MUST be in a quoted string to be used within a parameter value (as defined in section 3.6).
token = 1*<any CHAR except CTLs or separators> separators = "(" | ")" | "<" | ">" | "@" | "," | ";" | ":" | "\" | <"> | "/" | "[" | "]" | "?" | "=" | "{" | "}" | SP | HT
A string of text is parsed as a single word if it is quoted using double-quote marks.
quoted-string = ( <"> *(qdtext | quoted-pair ) <"> ) qdtext = <any TEXT except <">>
The backslash character ("\") MAY be used as a single-character quoting mechanism only within quoted-string and comment constructs.
quoted-pair = "\" CHAR
Parameters are in the form of attribute/value pairs.
parameter = attribute "=" value attribute = token value = token | quoted-string
buffer | buffer holding the name-value list to parse |
cursor | the parser cursor containing the current position and the bounds within the buffer for the parsing operation |
ParseException | in case of a parse error |
Implements HeaderValueParser.
|
static |
value | the NVP to parse |
parser | the parser to use, or null for default |
NameValuePair parseNameValuePair | ( | final CharArrayBuffer | buffer, |
final ParserCursor | cursor | ||
) |
buffer | the buffer holding the name-value pair to parse |
cursor | the parser cursor containing the current position and the bounds within the buffer for the parsing operation |
null
if no value is specified Implements HeaderValueParser.
|
protected |
Called from parseNameValuePair.
name | the name |
value | the value, or null |
|
static |
Note that BasicHeaderValueParser is not a singleton, there can be many instances of the class itself and of derived classes. The instance here provides non-customized, default behavior.