Class HttpClientRequest
- All Implemented Interfaces:
io.vertx.lang.rx.RxDelegate, StreamBase, WriteStream<Buffer>
Instances are created by an HttpClient instance, via one of the methods corresponding to the
specific HTTP methods, or the generic request methods. On creation the request will not have been written to the
wire.
Once a request has been obtained, headers can be set on it, and data can be written to its body if required. Once
you are ready to send the request, one of the end(String) methods should be called.
Nothing is actually sent until the request has been internally assigned an HTTP connection.
The HttpClient instance will return an instance of this class immediately, even if there are no HTTP
connections available in the pool. Any requests sent before a connection is assigned will be queued
internally and actually sent when an HTTP connection becomes available from the pool.
The headers of the request are queued for writing either when the end(String) method is called, or, when the first
part of the body is written, whichever occurs first.
This class supports both chunked and non-chunked HTTP.
It implements WriteStream so it can be used with
Pipe to pipe data with flow control.
An example of using this class is as follows:
NOTE: This class has been automatically generated from the original non RX-ified interface using Vert.x codegen.
-
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionHttpClientRequest(HttpClientRequest delegate) HttpClientRequest(Object delegate) -
Method Summary
Modifier and TypeMethodDescriptionauthority(HostAndPort authority) Override the request authority, when using HTTP/1.x this overrides the requesthostheader, when using HTTP/2 this sets theauthoritypseudo header.cancel()Attempt to cancel the request according to the semantics of the underlying HTTP implementation.connect()Create an HTTP tunnel to the server.continueHandler(Handler<Void> handler) If you send an HTTP request with the headerExpectset to the value100-continueand the server responds with an interim HTTP response with a status code of100and a Continue handler has been set using this method, then thehandlerwill be called.drainHandler(Handler<Void> handler) Set a drain handler on the stream.earlyHintsHandler(Handler<MultiMap> handler) If the server responds with an interim HTTP response with a status code of103and a Early Hints handler has been set using this method, then thehandlerwill be called.end()Ends the request.Same asend(String)but writes some data to the request body before ending.Same asend(String)but writes a String in UTF-8 encodingSame asend(String)but writes a String with the specified encodingbooleanexceptionHandler(Handler<Throwable> handler) Set an exception handler on the write stream.intThe HTTP method for the request.getURI()inthashCode()headers()idleTimeout(long timeout) Sets the amount of time after which, if the request does not return any data within the timeout period, the request/response is closed and the related futures are failed with aTimeoutException, e.g.booleanbooleanstatic HttpClientRequestintpath()pushHandler(Handler<HttpClientRequest> handler) Set a push handler for this request.putHeader(CharSequence name, CharSequence value) LikeputHeader(String, String)but using CharSequenceputHeader(CharSequence name, Iterable<CharSequence> values) LikeputHeader(String, String)but using CharSequencePut an HTTP header with multiple valuesPut an HTTP headerquery()redirectHandler(Function<HttpClientResponse, Single<HttpClientRequest>> handler) reset()Reset this stream with the error code0.reset(long code) Reset this request:Reset this request:response()rxCancel()Attempt to cancel the request according to the semantics of the underlying HTTP implementation.Create an HTTP tunnel to the server.rxEnd()Ends the request.Same asend(String)but writes some data to the request body before ending.Same asend(String)but writes a String in UTF-8 encodingSame asend(String)but writes a String with the specified encodingrxReset()Reset this stream with the error code0.rxReset(long code) Reset this request:Reset this request:rxSend()Send the request with an empty body.Send the request with a streambody.Send the request with a bufferbody.rxSend(ClientForm form) Likesend()but with aform.Send the request with a stringbody.Deprecated.Write some data to the stream.Write aStringto the request body, encoded as UTF-8.Write aStringto the request body, encoded using the encodingenc.rxWriteCustomFrame(int type, int flags, Buffer payload) Write an HTTP/2 frame to the request, allowing to extend the HTTP/2 protocol.rxWriteCustomFrame(HttpFrame frame) LikewriteCustomFrame(int, int, Buffer)but with anHttpFrame.Write the head of the request.send()Send the request with an empty body.Send the request with a streambody.Send the request with a bufferbody.send(ClientForm form) Likesend()but with aform.Send the request with a stringbody.sendHead()Deprecated.setChunked(boolean chunked) If chunked is true then the request will be set into HTTP chunked modesetFollowRedirects(boolean followRedirects) Set the request to follow HTTP redirects up toHttpClientOptions.setMaxRedirects(int maxRedirects) Set the max number of HTTP redirects this request will follow.setMethod(HttpMethod method) Set the HTTP method for this request.setStreamPriority(StreamPriority streamPriority) Sets the priority of the associated stream.Set the request uri.setWriteQueueMaxSize(int maxSize) Set the maximum size of the write queue tomaxSize.longstreamId()toString()traceOperation(String op) Set the trace operation of this request.version()Write some data to the stream.Write aStringto the request body, encoded as UTF-8.Write aStringto the request body, encoded using the encodingenc.writeCustomFrame(int type, int flags, Buffer payload) Write an HTTP/2 frame to the request, allowing to extend the HTTP/2 protocol.writeCustomFrame(HttpFrame frame) LikewriteCustomFrame(int, int, Buffer)but with anHttpFrame.Write the head of the request.booleanThis will returntrueif there are more bytes in the write queue than the value set usingsetWriteQueueMaxSize(int)
-
Field Details
-
__TYPE_ARG
-
-
Constructor Details
-
HttpClientRequest
-
HttpClientRequest
-
-
Method Details
-
toString
-
equals
-
hashCode
-
getDelegate
- Specified by:
getDelegatein interfaceio.vertx.lang.rx.RxDelegate- Specified by:
getDelegatein interfaceStreamBase- Specified by:
getDelegatein interfaceWriteStream<Buffer>
-
toObserver
- Specified by:
toObserverin interfaceWriteStream<Buffer>
-
toSubscriber
- Specified by:
toSubscriberin interfaceWriteStream<Buffer>
-
write
Write some data to the stream.The data is usually put on an internal write queue, and the write actually happens asynchronously. To avoid running out of memory by putting too much on the write queue, check the
WriteStream.writeQueueFull()method before writing. This is done automatically if using a .When the
datais moved from the queue to the actual medium, the returned will be completed with the write result, e.g the future is succeeded when a server HTTP response buffer is written to the socket and failed if the remote client has closed the socket while the data was still pending for write.- Specified by:
writein interfaceWriteStream<Buffer>- Parameters:
data- the data to write- Returns:
- a future completed with the write result
-
rxWrite
Write some data to the stream.The data is usually put on an internal write queue, and the write actually happens asynchronously. To avoid running out of memory by putting too much on the write queue, check the
WriteStream.writeQueueFull()method before writing. This is done automatically if using a .When the
datais moved from the queue to the actual medium, the returned will be completed with the write result, e.g the future is succeeded when a server HTTP response buffer is written to the socket and failed if the remote client has closed the socket while the data was still pending for write.- Specified by:
rxWritein interfaceWriteStream<Buffer>- Parameters:
data- the data to write- Returns:
- a future completed with the write result
-
writeQueueFull
public boolean writeQueueFull()This will returntrueif there are more bytes in the write queue than the value set usingsetWriteQueueMaxSize(int)- Specified by:
writeQueueFullin interfaceWriteStream<Buffer>- Returns:
trueif write queue is full
-
exceptionHandler
Description copied from interface:WriteStreamSet an exception handler on the write stream.- Specified by:
exceptionHandlerin interfaceStreamBase- Specified by:
exceptionHandlerin interfaceWriteStream<Buffer>- Parameters:
handler- the exception handler- Returns:
- a reference to this, so the API can be used fluently
-
setWriteQueueMaxSize
Description copied from interface:WriteStreamSet the maximum size of the write queue tomaxSize. You will still be able to write to the stream even if there is more thanmaxSizeitems in the write queue. This is used as an indicator by classes such asPipeto provide flow control. The value is defined by the implementation of the stream, e.g in bytes for aNetSocket, etc...- Specified by:
setWriteQueueMaxSizein interfaceWriteStream<Buffer>- Parameters:
maxSize- the max size of the write stream- Returns:
- a reference to this, so the API can be used fluently
-
drainHandler
Description copied from interface:WriteStreamSet a drain handler on the stream. If the write queue is full, then the handler will be called when the write queue is ready to accept buffers again. SeePipefor an example of this being used.The stream implementation defines when the drain handler, for example it could be when the queue size has been reduced to
maxSize / 2.- Specified by:
drainHandlerin interfaceWriteStream<Buffer>- Parameters:
handler- the handler- Returns:
- a reference to this, so the API can be used fluently
-
authority
Override the request authority, when using HTTP/1.x this overrides the requesthostheader, when using HTTP/2 this sets theauthoritypseudo header. When the port is a negative value, the default scheme port will be used.The default request authority is the server host and port when connecting to the server.
- Parameters:
authority- override the request authority- Returns:
- a reference to this, so the API can be used fluently
-
setFollowRedirects
Set the request to follow HTTP redirects up toHttpClientOptions.- Parameters:
followRedirects-trueto follow HTTP redirects- Returns:
- a reference to this, so the API can be used fluently
-
isFollowRedirects
public boolean isFollowRedirects()- Returns:
- whether HTTP redirections should be followed
-
setMaxRedirects
Set the max number of HTTP redirects this request will follow. The default is0which means no redirects.- Parameters:
maxRedirects- the number of HTTP redirect to follow- Returns:
- a reference to this, so the API can be used fluently
-
getMaxRedirects
public int getMaxRedirects()- Returns:
- the maximum number of HTTP redirections to follow
-
numberOfRedirections
public int numberOfRedirections()- Returns:
- the number of followed redirections for the current HTTP request
-
setChunked
If chunked is true then the request will be set into HTTP chunked mode- Parameters:
chunked- true if chunked encoding- Returns:
- a reference to this, so the API can be used fluently
-
isChunked
public boolean isChunked()- Returns:
- Is the request chunked?
-
getMethod
-
setMethod
Set the HTTP method for this request.- Parameters:
method- the HTTP method- Returns:
- a reference to this, so the API can be used fluently
-
absoluteURI
- Returns:
- the absolute URI corresponding to the HTTP request
-
getURI
- Returns:
- The URI of the request.
-
setURI
Set the request uri.- Parameters:
uri- the request uri- Returns:
- a reference to this, so the API can be used fluently
-
path
- Returns:
- The path part of the uri. For example /somepath/somemorepath/someresource.foo
-
query
- Returns:
- the query part of the uri. For example someparam=32&someotherparam=x
-
headers
- Returns:
- The HTTP headers
-
putHeader
Put an HTTP header- Parameters:
name- The header namevalue- The header value- Returns:
- a reference to this, so the API can be used fluently
-
traceOperation
Set the trace operation of this request.- Parameters:
op- the operation- Returns:
- @return a reference to this, so the API can be used fluently
-
traceOperation
- Returns:
- the trace operation of this request
-
version
- Returns:
- the HTTP version for this request
-
write
Write aStringto the request body, encoded as UTF-8.- Parameters:
chunk- the data chunk- Returns:
- a future completed with the result
-
rxWrite
Write aStringto the request body, encoded as UTF-8.- Parameters:
chunk- the data chunk- Returns:
- a future completed with the result
-
write
Write aStringto the request body, encoded using the encodingenc.- Parameters:
chunk- the data chunkenc- the encoding- Returns:
- a future completed with the result
-
rxWrite
Write aStringto the request body, encoded using the encodingenc.- Parameters:
chunk- the data chunkenc- the encoding- Returns:
- a future completed with the result
-
continueHandler
If you send an HTTP request with the headerExpectset to the value100-continueand the server responds with an interim HTTP response with a status code of100and a Continue handler has been set using this method, then thehandlerwill be called.You can then continue to write data to the request body and later end it. This is normally used in conjunction with the
writeHead()method to force the request header to be written before the request has ended.- Parameters:
handler-- Returns:
- a reference to this, so the API can be used fluently
-
earlyHintsHandler
If the server responds with an interim HTTP response with a status code of103and a Early Hints handler has been set using this method, then thehandlerwill be called.- Parameters:
handler-- Returns:
- a reference to this, so the API can be used fluently
-
redirectHandler
public HttpClientRequest redirectHandler(Function<HttpClientResponse, Single<HttpClientRequest>> handler) -
sendHead
Deprecated.Forces the head of the request to be written beforeend(String)is called on the request or any data is written to it.This is normally used to implement HTTP 100-continue handling, see
continueHandler(Handler)for more information.- Returns:
- a future notified with the result of the write operation
-
rxSendHead
Deprecated.Forces the head of the request to be written beforeend(String)is called on the request or any data is written to it.This is normally used to implement HTTP 100-continue handling, see
continueHandler(Handler)for more information.- Returns:
- a future notified with the result of the write operation
-
writeHead
Write the head of the request.This can be used to implement HTTP 100-continue handling, see
continueHandler(Handler)for more information.- Returns:
- a future notified with the result of the write operation
-
rxWriteHead
Write the head of the request.This can be used to implement HTTP 100-continue handling, see
continueHandler(Handler)for more information.- Returns:
- a future notified with the result of the write operation
-
connect
Create an HTTP tunnel to the server.Send HTTP request headers to the server, then configures the transport to exchange raw buffers when the server replies with an appropriate response:
200for HTTPCONNECTmethod101for HTTP/1.1GETwithUpgradeconnectionheader
The
handleris called after response headers are received.Use
HttpClientResponse.netSocket()to get a for interacting more conveniently with the server.HTTP/1.1 pipe-lined requests are not supported.f
- Returns:
- a future notified with the server response
-
rxConnect
Create an HTTP tunnel to the server.Send HTTP request headers to the server, then configures the transport to exchange raw buffers when the server replies with an appropriate response:
200for HTTPCONNECTmethod101for HTTP/1.1GETwithUpgradeconnectionheader
The
handleris called after response headers are received.Use
HttpClientResponse.netSocket()to get a for interacting more conveniently with the server.HTTP/1.1 pipe-lined requests are not supported.f
- Returns:
- a future notified with the server response
-
response
- Returns:
- a future of the
HttpClientResponse, this method does not modify the current request being sent.
-
rxResponse
- Returns:
- a future of the
HttpClientResponse, this method does not modify the current request being sent.
-
send
Send the request with an empty body.- Returns:
- a future notified when the HTTP response is available
-
rxSend
Send the request with an empty body.- Returns:
- a future notified when the HTTP response is available
-
send
Send the request with a stringbody.- Parameters:
body-- Returns:
- a future notified when the HTTP response is available
-
rxSend
Send the request with a stringbody.- Parameters:
body-- Returns:
- a future notified when the HTTP response is available
-
send
Send the request with a bufferbody.- Parameters:
body-- Returns:
- a future notified when the HTTP response is available
-
rxSend
Send the request with a bufferbody.- Parameters:
body-- Returns:
- a future notified when the HTTP response is available
-
send
Likesend()but with aform. The content will be set toapplication/x-www-form-urlencodedormultipart/form-dataaccording to the nature of the form.- Parameters:
form- the form to send- Returns:
- a future notified when the HTTP response is available
-
rxSend
Likesend()but with aform. The content will be set toapplication/x-www-form-urlencodedormultipart/form-dataaccording to the nature of the form.- Parameters:
form- the form to send- Returns:
- a future notified when the HTTP response is available
-
send
Send the request with a streambody.If the
HttpHeadersis set then the request assumes this is the length of the {stream}, otherwise the request will set a chunkedHttpHeaders.- Parameters:
body-- Returns:
- a future notified when the HTTP response is available
-
rxSend
Send the request with a streambody.If the
HttpHeadersis set then the request assumes this is the length of the {stream}, otherwise the request will set a chunkedHttpHeaders.- Parameters:
body-- Returns:
- a future notified when the HTTP response is available
-
end
Same asend(String)but writes a String in UTF-8 encoding- Parameters:
chunk- the data chunk- Returns:
- a future completed with the result
-
rxEnd
Same asend(String)but writes a String in UTF-8 encoding- Parameters:
chunk- the data chunk- Returns:
- a future completed with the result
-
end
Same asend(String)but writes a String with the specified encoding- Parameters:
chunk- the data chunkenc- the encoding- Returns:
- a future completed with the result
-
rxEnd
Same asend(String)but writes a String with the specified encoding- Parameters:
chunk- the data chunkenc- the encoding- Returns:
- a future completed with the result
-
end
Same asend(String)but writes some data to the request body before ending. If the request is not chunked and no other data has been written then theContent-Lengthheader will be automatically set- Specified by:
endin interfaceWriteStream<Buffer>- Parameters:
chunk-- Returns:
- a future completed with the result
-
rxEnd
Same asend(String)but writes some data to the request body before ending. If the request is not chunked and no other data has been written then theContent-Lengthheader will be automatically set- Specified by:
rxEndin interfaceWriteStream<Buffer>- Parameters:
chunk-- Returns:
- a future completed with the result
-
end
Ends the request. If no data has been written to the request body, andwriteHead()has not been called then the actual request won't get written until this method gets called.Once the request has ended, it cannot be used any more,
- Specified by:
endin interfaceWriteStream<Buffer>- Returns:
- a future completed with the result
-
rxEnd
Ends the request. If no data has been written to the request body, andwriteHead()has not been called then the actual request won't get written until this method gets called.Once the request has ended, it cannot be used any more,
- Specified by:
rxEndin interfaceWriteStream<Buffer>- Returns:
- a future completed with the result
-
idleTimeout
Sets the amount of time after which, if the request does not return any data within the timeout period, the request/response is closed and the related futures are failed with aTimeoutException, e.g.FutureorFutureresponse body.- Parameters:
timeout- the amount of time in milliseconds.- Returns:
- a reference to this, so the API can be used fluently
-
pushHandler
Set a push handler for this request. The handler is called when the client receives a push promise from the server. The handler can be called multiple times, for each push promise. The handler is called with a read-onlyHttpClientRequest, the following methods can be called: In addition the handler should call theresponse()method to set an handler to process the response.- Parameters:
handler- the handler- Returns:
- a reference to this, so the API can be used fluently
-
reset
-
rxReset
-
reset
Reset this request:- for HTTP/1.x, this closes the connection when the current request is inflight
- for HTTP/2, this performs send an HTTP/2 reset frame with the specified error
code - for HTTP/3, this is only effective if the stream has not been fully sent
Stream reset should be avoided because the implementation works partially for HTTP/3 and reset error codes depends on the version of the protocol,
cancel()should be used instead.- Parameters:
code- the error code- Returns:
truewhen reset has been performed
-
rxReset
Reset this request:- for HTTP/1.x, this closes the connection when the current request is inflight
- for HTTP/2, this performs send an HTTP/2 reset frame with the specified error
code - for HTTP/3, this is only effective if the stream has not been fully sent
Stream reset should be avoided because the implementation works partially for HTTP/3 and reset error codes depends on the version of the protocol,
cancel()should be used instead.- Parameters:
code- the error code- Returns:
truewhen reset has been performed
-
cancel
Attempt to cancel the request according to the semantics of the underlying HTTP implementation.- for HTTP/1.x, this closes the connection when the current request is inflight
- for HTTP/2, this performs send an HTTP/2 reset frame with the error
0x08 - for HTTP/3, this resets or abort reading the underlying QUIC stream with code
0x10c
- Returns:
- a future notifying the cancellation outcome
-
rxCancel
Attempt to cancel the request according to the semantics of the underlying HTTP implementation.- for HTTP/1.x, this closes the connection when the current request is inflight
- for HTTP/2, this performs send an HTTP/2 reset frame with the error
0x08 - for HTTP/3, this resets or abort reading the underlying QUIC stream with code
0x10c
- Returns:
- a future notifying the cancellation outcome
-
reset
Reset this request:- for HTTP/2, send an HTTP/2 reset frame with the specified error
code - for HTTP/1.x, close the connection when the current request is inflight
falseis returned as indicator.- Parameters:
code- the error codecause- an optional cause that can be attached to the error code- Returns:
- true when reset has been performed
- for HTTP/2, send an HTTP/2 reset frame with the specified error
-
rxReset
Reset this request:- for HTTP/2, send an HTTP/2 reset frame with the specified error
code - for HTTP/1.x, close the connection when the current request is inflight
falseis returned as indicator.- Parameters:
code- the error codecause- an optional cause that can be attached to the error code- Returns:
- true when reset has been performed
- for HTTP/2, send an HTTP/2 reset frame with the specified error
-
connection
- Returns:
- the
HttpConnectionassociated with this request
-
writeCustomFrame
Write an HTTP/2 frame to the request, allowing to extend the HTTP/2 protocol.The frame is sent immediatly and is not subject to flow control.
This method must be called after the request headers have been sent and only for the protocol HTTP/2. The
writeHead()should be used for this purpose.- Parameters:
type- the 8-bit frame typeflags- the 8-bit frame flagspayload- the frame payload- Returns:
- a reference to this, so the API can be used fluently
-
rxWriteCustomFrame
Write an HTTP/2 frame to the request, allowing to extend the HTTP/2 protocol.The frame is sent immediatly and is not subject to flow control.
This method must be called after the request headers have been sent and only for the protocol HTTP/2. The
writeHead()should be used for this purpose.- Parameters:
type- the 8-bit frame typeflags- the 8-bit frame flagspayload- the frame payload- Returns:
- a reference to this, so the API can be used fluently
-
streamId
public long streamId()- Returns:
- the id of the stream of this response, when it is not yet determined, i.e the request has not been yet sent or it is not supported HTTP/1.x
-
writeCustomFrame
LikewriteCustomFrame(int, int, Buffer)but with anHttpFrame.- Parameters:
frame- the frame to write- Returns:
-
rxWriteCustomFrame
LikewriteCustomFrame(int, int, Buffer)but with anHttpFrame.- Parameters:
frame- the frame to write- Returns:
-
setStreamPriority
Sets the priority of the associated stream. This is not implemented for HTTP/1.x.- Parameters:
streamPriority- the priority of this request's stream- Returns:
-
getStreamPriority
- Returns:
- the priority of the associated HTTP/2 stream for HTTP/2 otherwise
null
-
putHeader
LikeputHeader(String, String)but using CharSequence- Parameters:
name-value-- Returns:
-
putHeader
Put an HTTP header with multiple values- Parameters:
name- The header namevalues- The header values- Returns:
- @return a reference to this, so the API can be used fluently
-
putHeader
LikeputHeader(String, String)but using CharSequence- Parameters:
name-values-- Returns:
-
newInstance
-