Package org.apache.hc.core5.http.impl.io
Class HttpRequestExecutor
- java.lang.Object
-
- org.apache.hc.core5.http.impl.io.HttpRequestExecutor
-
@Contract(threading=IMMUTABLE) public class HttpRequestExecutor extends java.lang.Object
HttpRequestExecutoris a client side HTTP protocol handler based on the blocking (classic) I/O model.HttpRequestExecutorrelies onHttpProcessorto generate mandatory protocol headers for all outgoing messages and apply common, cross-cutting message transformations to all incoming and outgoing messages. Application specific processing can be implemented outsideHttpRequestExecutoronce the request has been executed and a response has been received.- Since:
- 4.0
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classHttpRequestExecutor.BuilderBuilder forHttpRequestExecutor.
-
Field Summary
Fields Modifier and Type Field Description private ConnectionReuseStrategyconnReuseStrategystatic TimeoutDEFAULT_WAIT_FOR_CONTINUEprivate Http1StreamListenerstreamListenerprivate TimeoutwaitForContinue
-
Constructor Summary
Constructors Constructor Description HttpRequestExecutor()HttpRequestExecutor(ConnectionReuseStrategy connReuseStrategy)HttpRequestExecutor(Timeout waitForContinue, ConnectionReuseStrategy connReuseStrategy, Http1StreamListener streamListener)Creates new instance of HttpRequestExecutor.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static HttpRequestExecutor.Builderbuilder()Create a newHttpRequestExecutor.Builder.ClassicHttpResponseexecute(ClassicHttpRequest request, HttpClientConnection conn, HttpResponseInformationCallback informationCallback, HttpContext context)Sends the request and obtain a response.ClassicHttpResponseexecute(ClassicHttpRequest request, HttpClientConnection conn, HttpContext context)Sends the request and obtain a response.booleankeepAlive(ClassicHttpRequest request, ClassicHttpResponse response, HttpClientConnection connection, HttpContext context)Determines whether the connection can be kept alive and is safe to be re-used for subsequent message exchanges.voidpostProcess(ClassicHttpResponse response, HttpProcessor processor, HttpContext context)Post-processes the given response using the given protocol processor and completes the process of request execution.voidpreProcess(ClassicHttpRequest request, HttpProcessor processor, HttpContext context)Pre-process the given request using the given protocol processor and initiates the process of request execution.
-
-
-
Field Detail
-
DEFAULT_WAIT_FOR_CONTINUE
public static final Timeout DEFAULT_WAIT_FOR_CONTINUE
-
waitForContinue
private final Timeout waitForContinue
-
connReuseStrategy
private final ConnectionReuseStrategy connReuseStrategy
-
streamListener
private final Http1StreamListener streamListener
-
-
Constructor Detail
-
HttpRequestExecutor
public HttpRequestExecutor(Timeout waitForContinue, ConnectionReuseStrategy connReuseStrategy, Http1StreamListener streamListener)
Creates new instance of HttpRequestExecutor.- Since:
- 4.3
-
HttpRequestExecutor
public HttpRequestExecutor(ConnectionReuseStrategy connReuseStrategy)
-
HttpRequestExecutor
public HttpRequestExecutor()
-
-
Method Detail
-
execute
public ClassicHttpResponse execute(ClassicHttpRequest request, HttpClientConnection conn, HttpResponseInformationCallback informationCallback, HttpContext context) throws java.io.IOException, HttpException
Sends the request and obtain a response.- Parameters:
request- the request to execute.conn- the connection over which to execute the request.informationCallback- callback to execute upon receipt of information status (1xx). May be null.context- the context- Returns:
- the response to the request.
- Throws:
java.io.IOException- in case of an I/O error.HttpException- in case of HTTP protocol violation or a processing problem.
-
execute
public ClassicHttpResponse execute(ClassicHttpRequest request, HttpClientConnection conn, HttpContext context) throws java.io.IOException, HttpException
Sends the request and obtain a response.- Parameters:
request- the request to execute.conn- the connection over which to execute the request.context- the context- Returns:
- the response to the request.
- Throws:
java.io.IOException- in case of an I/O error.HttpException- in case of HTTP protocol violation or a processing problem.
-
preProcess
public void preProcess(ClassicHttpRequest request, HttpProcessor processor, HttpContext context) throws HttpException, java.io.IOException
Pre-process the given request using the given protocol processor and initiates the process of request execution.- Parameters:
request- the request to prepareprocessor- the processor to usecontext- the context for sending the request- Throws:
java.io.IOException- in case of an I/O error.HttpException- in case of HTTP protocol violation or a processing problem.
-
postProcess
public void postProcess(ClassicHttpResponse response, HttpProcessor processor, HttpContext context) throws HttpException, java.io.IOException
Post-processes the given response using the given protocol processor and completes the process of request execution.This method does not read the response entity, if any. The connection over which content of the response entity is being streamed from cannot be reused until the response entity has been fully consumed.
- Parameters:
response- the response object to post-processprocessor- the processor to usecontext- the context for post-processing the response- Throws:
java.io.IOException- in case of an I/O error.HttpException- in case of HTTP protocol violation or a processing problem.
-
keepAlive
public boolean keepAlive(ClassicHttpRequest request, ClassicHttpResponse response, HttpClientConnection connection, HttpContext context) throws java.io.IOException
Determines whether the connection can be kept alive and is safe to be re-used for subsequent message exchanges.- Parameters:
request- current request object.response- current response object.connection- actual connection.context- current context.- Returns:
trueis the connection can be kept-alive and re-used.- Throws:
java.io.IOException- in case of an I/O error.
-
builder
public static HttpRequestExecutor.Builder builder()
Create a newHttpRequestExecutor.Builder.- Since:
- 5.2
-
-