Class RequestContent
- java.lang.Object
-
- org.apache.hc.core5.http.protocol.RequestContent
-
- All Implemented Interfaces:
HttpRequestInterceptor
- Direct Known Subclasses:
H2RequestContent
@Contract(threading=IMMUTABLE) public class RequestContent extends java.lang.Object implements HttpRequestInterceptor
This request interceptor is responsible for delimiting the message content by addingContent-LengthorTransfer-Contentheaders 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.
- Since:
- 4.0
-
-
Field Summary
Fields Modifier and Type Field Description static HttpRequestInterceptorINSTANCESingleton instance.private booleanoverwrite
-
Constructor Summary
Constructors Constructor Description RequestContent()Default constructor.RequestContent(boolean overwrite)Constructor that can be used to fine-tune behavior of this interceptor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private booleanisContentEnclosingMethod(java.lang.String method)voidprocess(HttpRequest request, EntityDetails entity, HttpContext context)Processes a request.voidvalidateOptionsContentType(HttpRequest request)Validates the presence of the Content-Type header for an OPTIONS request.
-
-
-
Field Detail
-
INSTANCE
public static final HttpRequestInterceptor INSTANCE
Singleton instance.- Since:
- 5.2
-
overwrite
private final boolean overwrite
-
-
Constructor Detail
-
RequestContent
public RequestContent()
Default constructor. TheContent-LengthorTransfer-Encodingwill cause the interceptor to throwProtocolExceptionif already present in the response message.
-
RequestContent
public RequestContent(boolean overwrite)
Constructor that can be used to fine-tune behavior of this interceptor.- Parameters:
overwrite- If set totruetheContent-LengthandTransfer-Encodingheaders will be created or updated if already present. If set tofalsetheContent-LengthandTransfer-Encodingheaders will cause the interceptor to throwProtocolExceptionif already present in the response message.- Since:
- 4.2
-
-
Method Detail
-
process
public void process(HttpRequest request, EntityDetails entity, HttpContext context) throws HttpException, java.io.IOException
Description copied from interface:HttpRequestInterceptorProcesses a request. On the client side, this step is performed before the request is sent to the server. On the server side, this step is performed on incoming messages before the message body is evaluated.- Specified by:
processin interfaceHttpRequestInterceptor- Parameters:
request- the request to processentity- the request entity details ornullif not availablecontext- the context for the request- Throws:
HttpException- in case of an HTTP protocol violationjava.io.IOException- in case of an I/O error
-
isContentEnclosingMethod
private boolean isContentEnclosingMethod(java.lang.String method)
-
validateOptionsContentType
public void validateOptionsContentType(HttpRequest request) throws ProtocolException
Validates the presence of the Content-Type header for an OPTIONS request.According to the RFC specifications, an HTTP
Method.OPTIONSrequest 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, aProtocolExceptionis thrown.Note: This method does not check the validity of the Content-Type header value, only its presence.
- Parameters:
request- TheHttpRequestto be validated for the presence of the Content-Type header. Must not be null.- Throws:
ProtocolException- If the Content-Type header is missing in an OPTIONS request with content.
-
-