An iterable over a collection of HTTP message headers.
Don't fall for the simplification that a header is just a name value pair. It is, but each HTTP message can have multiple headers with the same name. And the names are case-insensitive. Furthermore, each header value is actually a comma separated list. People often refer to these value elements as "the header value". To top it off, each of those elements can have its own set of parameters.
When this iterable is used via iterator method or anything built on it, like the Groovy extensions, the headers with the same (case-insensitive) name will be available separately. This is useful when the meaning of the headers doesn't really matter. E.g. when copying the headers from one place to another.
Type Params | Return Type | Name and description |
---|---|---|
|
Iterator<HeaderElement> |
getAt(String name) An iterator over all HTTP header value elements of all headers with the given name in this collection. |
An iterator over all HTTP header value elements of all headers with the given name in this collection.
This method is used when meaning of the headers drives the decision making in the program.
For example, given the following headers:
Set-Cookie: cookie1=a; path=/; domain=localhost
Set-Cookie: cookie2=b; path="/", cookie3=c; domain="localhost"
This iterator will allow you to collect all the three cookies as if they were in three separate headers:
headers['Set-Cookie'].each { cookie ->
println "Cookie called ${cookie.name} has a value of ${cookie.value}"
cookie.each { param ->
println " - ${param.name} = ${param.value}
}
}
Above would print:
Cookie c1 has a value of a - path = / - domain = localhost Cookie c2 has a value of b - path = / Cookie c3 has a value of c - domain = localhost
Note, however, that not all elements have a value. E.g. in header 'Accept: application/json', the sole element has name 'application/json' and a null value.
name
- Case-insensitive header name.