@Contract(threading=IMMUTABLE) public class RequestContent extends Object implements HttpRequestInterceptor
Content-Length
or Transfer-Content
headers based
on the properties of the enclosed entity and the protocol version.
This interceptor is essential for the HTTP protocol conformance and the correct operation of the client-side message processing pipeline.
Modifier and Type | Field and Description |
---|---|
static HttpRequestInterceptor |
INSTANCE
Singleton instance.
|
Constructor and Description |
---|
RequestContent()
Default constructor.
|
RequestContent(boolean overwrite)
Constructor that can be used to fine-tune behavior of this interceptor.
|
Modifier and Type | Method and Description |
---|---|
void |
process(HttpRequest request,
EntityDetails entity,
HttpContext context)
Processes a request.
|
void |
validateOptionsContentType(HttpRequest request)
Validates the presence of the Content-Type header for an OPTIONS request.
|
public static final HttpRequestInterceptor INSTANCE
public RequestContent()
Content-Length
or Transfer-Encoding
will cause the interceptor to throw ProtocolException
if already present in the
response message.public RequestContent(boolean overwrite)
overwrite
- If set to true
the Content-Length
and
Transfer-Encoding
headers will be created or updated if already present.
If set to false
the Content-Length
and
Transfer-Encoding
headers will cause the interceptor to throw
ProtocolException
if already present in the response message.public void process(HttpRequest request, EntityDetails entity, HttpContext context) throws HttpException, IOException
HttpRequestInterceptor
process
in interface HttpRequestInterceptor
request
- the request to processentity
- the request entity details or null
if not availablecontext
- the context for the requestHttpException
- in case of an HTTP protocol violationIOException
- in case of an I/O errorpublic void validateOptionsContentType(HttpRequest request) throws ProtocolException
According to the RFC specifications, an HTTP Method.OPTIONS
request that contains content
must have a Content-Type header. This method checks for the presence of the Content-Type header
in such requests. It does not validate the actual value of the Content-Type header, as determining
its validity would require knowledge of all valid media types, which is beyond the scope of this method.
If the header is absent, a ProtocolException
is thrown.
Note: This method does not check the validity of the Content-Type header value, only its presence.
request
- The HttpRequest
to be validated for the presence of the Content-Type header. Must not be null.ProtocolException
- If the Content-Type header is missing in an OPTIONS request with content.Copyright © 2005–2021 The Apache Software Foundation. All rights reserved.