public class HttpClientRequest extends Object implements WriteStream<Buffer>, ReadStream<HttpClientResponse>
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(java.lang.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(java.lang.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
Pump
to pump 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.Modifier and Type | Field and Description |
---|---|
static io.vertx.lang.rx.TypeArg<HttpClientRequest> |
__TYPE_ARG |
Constructor and Description |
---|
HttpClientRequest(HttpClientRequest delegate) |
HttpClientRequest(Object delegate) |
Modifier and Type | Method and Description |
---|---|
String |
absoluteURI() |
HttpConnection |
connection() |
HttpClientRequest |
connectionHandler(Handler<HttpConnection> handler)
Deprecated.
|
HttpClientRequest |
continueHandler(Handler<Void> handler)
If you send an HTTP request with the header
Expect set to the value 100-continue
and the server responds with an interim HTTP response with a status code of 100 and a continue handler
has been set using this method, then the handler will be called. |
HttpClientRequest |
drainHandler(Handler<Void> handler)
Set a drain handler on the stream.
|
void |
end()
Ends the request.
|
void |
end(Buffer chunk)
Same as
end(java.lang.String) but writes some data to the request body before ending. |
void |
end(Buffer chunk,
Handler<AsyncResult<Void>> handler)
Same as
end(java.lang.String) but with an handler called when the operation completes |
void |
end(Handler<AsyncResult<Void>> handler)
Same as
end(java.lang.String) but with an handler called when the operation completes |
void |
end(String chunk)
Same as
end(java.lang.String) but writes a String in UTF-8 encoding |
void |
end(String chunk,
Handler<AsyncResult<Void>> handler)
Same as
end(java.lang.String) but with an handler called when the operation completes |
void |
end(String chunk,
String enc)
Same as
end(java.lang.String) but writes a String with the specified encoding |
void |
end(String chunk,
String enc,
Handler<AsyncResult<Void>> handler)
Same as
end(java.lang.String) but with an handler called when the operation completes |
HttpClientRequest |
endHandler(Handler<Void> endHandler)
Deprecated.
|
boolean |
equals(Object o) |
HttpClientRequest |
exceptionHandler(Handler<Throwable> handler)
Set an exception handler on the write stream.
|
HttpClientRequest |
fetch(long amount)
Deprecated.
|
HttpClientRequest |
getDelegate() |
String |
getHost() |
String |
getRawMethod() |
StreamPriority |
getStreamPriority() |
HttpClientRequest |
handler(Handler<HttpClientResponse> handler)
Deprecated.
|
int |
hashCode() |
MultiMap |
headers() |
boolean |
isChunked() |
HttpMethod |
method()
The HTTP method for the request.
|
static HttpClientRequest |
newInstance(HttpClientRequest arg) |
String |
path() |
HttpClientRequest |
pause()
Deprecated.
|
Pipe<HttpClientResponse> |
pipe()
Pause this stream and return a to transfer the elements of this stream to a destination .
|
void |
pipeTo(WriteStream<HttpClientResponse> dst)
Like
ReadStream.pipeTo(io.vertx.reactivex.core.streams.WriteStream<T>) but with no completion handler. |
void |
pipeTo(WriteStream<HttpClientResponse> dst,
Handler<AsyncResult<Void>> handler)
Pipe this
ReadStream to the WriteStream . |
HttpClientRequest |
pushHandler(Handler<HttpClientRequest> handler)
Set a push handler for this request.
The handler is called when the client receives a push promise from the server.
|
HttpClientRequest |
putHeader(CharSequence name,
CharSequence value)
Like
putHeader(java.lang.String, java.lang.String) but using CharSequence |
HttpClientRequest |
putHeader(CharSequence name,
Iterable<CharSequence> values)
Like
putHeader(java.lang.String, java.lang.String) but using CharSequence |
HttpClientRequest |
putHeader(String name,
Iterable<String> values)
Put an HTTP header with multiple values
|
HttpClientRequest |
putHeader(String name,
String value)
Put an HTTP header
|
String |
query() |
boolean |
reset()
Reset this stream with the error code
0 . |
boolean |
reset(long code)
Reset this request:
for HTTP/2, this performs send an HTTP/2 reset frame with the specified error
code
for HTTP/1.x, this closes the connection when the current request is inflight
When the request has not yet been sent, the request will be aborted and false is returned as indicator. |
HttpClientRequest |
resume()
Deprecated.
|
Completable |
rxEnd()
Same as
end(java.lang.String) but with an handler called when the operation completes |
Completable |
rxEnd(Buffer chunk)
Same as
end(java.lang.String) but with an handler called when the operation completes |
Completable |
rxEnd(String chunk)
Same as
end(java.lang.String) but with an handler called when the operation completes |
Completable |
rxEnd(String chunk,
String enc)
Same as
end(java.lang.String) but with an handler called when the operation completes |
Completable |
rxPipeTo(WriteStream<HttpClientResponse> dst)
Pipe this
ReadStream to the WriteStream . |
Completable |
rxWrite(Buffer data)
Same as
write(io.vertx.reactivex.core.buffer.Buffer) but with an handler called when the operation completes |
Completable |
rxWrite(String chunk)
Same as
write(io.vertx.reactivex.core.buffer.Buffer) but with an handler called when the operation completes |
Completable |
rxWrite(String chunk,
String enc)
Same as
write(io.vertx.reactivex.core.buffer.Buffer) but with an handler called when the operation completes |
HttpClientRequest |
sendHead()
Forces the head of the request to be written before
end(java.lang.String) is called on the request or any data is
written to it. |
HttpClientRequest |
sendHead(Handler<HttpVersion> completionHandler)
Like
sendHead() but with an handler after headers have been sent. |
HttpClientRequest |
setChunked(boolean chunked)
If chunked is true then the request will be set into HTTP chunked mode
|
HttpClientRequest |
setFollowRedirects(boolean followRedirects)
Set the request to follow HTTP redirects up to
HttpClientOptions . |
HttpClientRequest |
setHost(String host)
Set the request host.
For HTTP/2 it sets the pseudo header otherwise it sets the header
|
HttpClientRequest |
setMaxRedirects(int maxRedirects)
Set the max number of HTTP redirects this request will follow.
|
HttpClientRequest |
setRawMethod(String method)
Set the value the method to send when the method is used.
|
HttpClientRequest |
setStreamPriority(StreamPriority streamPriority)
Sets the priority of the associated stream.
|
HttpClientRequest |
setTimeout(long timeoutMs)
Set's the amount of time after which if the request does not return any data within the timeout period an
TimeoutException will be passed to the exception handler (if provided) and
the request will be closed. |
HttpClientRequest |
setWriteQueueMaxSize(int maxSize)
Set the maximum size of the write queue to
maxSize . |
int |
streamId() |
Flowable<HttpClientResponse> |
toFlowable() |
Observable<HttpClientResponse> |
toObservable() |
<any> |
toObserver() |
String |
toString() |
<any> |
toSubscriber() |
String |
uri() |
HttpClientRequest |
write(Buffer data)
Write some data to the stream.
|
HttpClientRequest |
write(Buffer data,
Handler<AsyncResult<Void>> handler)
Same as
write(io.vertx.reactivex.core.buffer.Buffer) but with an handler called when the operation completes |
HttpClientRequest |
write(String chunk)
Write a
String to the request body, encoded as UTF-8. |
HttpClientRequest |
write(String chunk,
Handler<AsyncResult<Void>> handler)
Same as
write(io.vertx.reactivex.core.buffer.Buffer) but with an handler called when the operation completes |
HttpClientRequest |
write(String chunk,
String enc)
Write a
String to the request body, encoded using the encoding enc . |
HttpClientRequest |
write(String chunk,
String enc,
Handler<AsyncResult<Void>> handler)
Same as
write(io.vertx.reactivex.core.buffer.Buffer) but with an handler called when the operation completes |
HttpClientRequest |
writeCustomFrame(HttpFrame frame)
Like
writeCustomFrame(int, int, io.vertx.reactivex.core.buffer.Buffer) but with an HttpFrame . |
HttpClientRequest |
writeCustomFrame(int type,
int flags,
Buffer payload)
Write an HTTP/2 frame to the request, allowing to extend the HTTP/2 protocol.
|
boolean |
writeQueueFull()
This will return
true if there are more bytes in the write queue than the value set using setWriteQueueMaxSize(int) |
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
newInstance, newInstance
newInstance, newInstance
newInstance
public static final io.vertx.lang.rx.TypeArg<HttpClientRequest> __TYPE_ARG
public HttpClientRequest(HttpClientRequest delegate)
public HttpClientRequest(Object delegate)
public HttpClientRequest getDelegate()
getDelegate
in interface ReadStream<HttpClientResponse>
getDelegate
in interface StreamBase
getDelegate
in interface WriteStream<Buffer>
public Observable<HttpClientResponse> toObservable()
toObservable
in interface ReadStream<HttpClientResponse>
public Flowable<HttpClientResponse> toFlowable()
toFlowable
in interface ReadStream<HttpClientResponse>
public <any> toObserver()
public <any> toSubscriber()
public boolean writeQueueFull()
true
if there are more bytes in the write queue than the value set using setWriteQueueMaxSize(int)
writeQueueFull
in interface WriteStream<Buffer>
public Pipe<HttpClientResponse> pipe()
WriteStream
.pipe
in interface ReadStream<HttpClientResponse>
public void pipeTo(WriteStream<HttpClientResponse> dst)
ReadStream.pipeTo(io.vertx.reactivex.core.streams.WriteStream<T>)
but with no completion handler.pipeTo
in interface ReadStream<HttpClientResponse>
dst
- public void pipeTo(WriteStream<HttpClientResponse> dst, Handler<AsyncResult<Void>> handler)
ReadStream
to the WriteStream
.
Elements emitted by this stream will be written to the write stream until this stream ends or fails.
Once this stream has ended or failed, the write stream will be ended and the handler
will be
called with the result.
pipeTo
in interface ReadStream<HttpClientResponse>
dst
- the destination write streamhandler
- public Completable rxPipeTo(WriteStream<HttpClientResponse> dst)
ReadStream
to the WriteStream
.
Elements emitted by this stream will be written to the write stream until this stream ends or fails.
Once this stream has ended or failed, the write stream will be ended and the handler
will be
called with the result.
dst
- the destination write streampublic HttpClientRequest exceptionHandler(Handler<Throwable> handler)
WriteStream
exceptionHandler
in interface ReadStream<HttpClientResponse>
exceptionHandler
in interface StreamBase
exceptionHandler
in interface WriteStream<Buffer>
handler
- the exception handlerpublic HttpClientRequest write(Buffer data)
WriteStream
WriteStream.writeQueueFull()
method before writing. This is done automatically if using a Pump
.write
in interface WriteStream<Buffer>
data
- public HttpClientRequest write(Buffer data, Handler<AsyncResult<Void>> handler)
write(io.vertx.reactivex.core.buffer.Buffer)
but with an handler
called when the operation completeswrite
in interface WriteStream<Buffer>
data
- handler
- public Completable rxWrite(Buffer data)
write(io.vertx.reactivex.core.buffer.Buffer)
but with an handler
called when the operation completesdata
- public HttpClientRequest setWriteQueueMaxSize(int maxSize)
WriteStream
maxSize
. You will still be able to write to the stream even
if there is more than maxSize
items in the write queue. This is used as an indicator by classes such as
Pump
to provide flow control.
The value is defined by the implementation of the stream, e.g in bytes for a
NetSocket
, the number of Message
for a
MessageProducer
, etc...setWriteQueueMaxSize
in interface WriteStream<Buffer>
maxSize
- the max size of the write streampublic HttpClientRequest drainHandler(Handler<Void> handler)
WriteStream
Pump
for 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
.drainHandler
in interface WriteStream<Buffer>
handler
- the handler@Deprecated public HttpClientRequest handler(Handler<HttpClientResponse> handler)
ReadStream
handler
in interface ReadStream<HttpClientResponse>
handler
- @Deprecated public HttpClientRequest pause()
ReadStream
ReadStream
, it sets the buffer in fetch
mode and clears the actual demand.
While it's paused, no data will be sent to the data handler
.
pause
in interface ReadStream<HttpClientResponse>
@Deprecated public HttpClientRequest resume()
ReadStream
flowing
mode.
If the ReadStream
has been paused, reading will recommence on it.resume
in interface ReadStream<HttpClientResponse>
@Deprecated public HttpClientRequest fetch(long amount)
ReadStream
amount
of elements. If the ReadStream
has been paused, reading will
recommence with the specified amount
of items, otherwise the specified amount
will
be added to the current stream demand.fetch
in interface ReadStream<HttpClientResponse>
amount
- @Deprecated public HttpClientRequest endHandler(Handler<Void> endHandler)
ReadStream
endHandler
in interface ReadStream<HttpClientResponse>
endHandler
- public HttpClientRequest setFollowRedirects(boolean followRedirects)
HttpClientOptions
.followRedirects
- true
to follow HTTP redirectspublic HttpClientRequest setMaxRedirects(int maxRedirects)
0
which means
no redirects.maxRedirects
- the number of HTTP redirect to followpublic HttpClientRequest setChunked(boolean chunked)
chunked
- true if chunked encodingpublic boolean isChunked()
public HttpMethod method()
public String getRawMethod()
public HttpClientRequest setRawMethod(String method)
method
- the raw methodpublic String absoluteURI()
public String uri()
public String path()
public String query()
public HttpClientRequest setHost(String host)
host
- public String getHost()
public MultiMap headers()
public HttpClientRequest putHeader(String name, String value)
name
- The header namevalue
- The header valuepublic HttpClientRequest write(String chunk)
String
to the request body, encoded as UTF-8.chunk
- public HttpClientRequest write(String chunk, Handler<AsyncResult<Void>> handler)
write(io.vertx.reactivex.core.buffer.Buffer)
but with an handler
called when the operation completeschunk
- handler
- public Completable rxWrite(String chunk)
write(io.vertx.reactivex.core.buffer.Buffer)
but with an handler
called when the operation completeschunk
- public HttpClientRequest write(String chunk, String enc)
String
to the request body, encoded using the encoding enc
.chunk
- enc
- public HttpClientRequest write(String chunk, String enc, Handler<AsyncResult<Void>> handler)
write(io.vertx.reactivex.core.buffer.Buffer)
but with an handler
called when the operation completeschunk
- enc
- handler
- public Completable rxWrite(String chunk, String enc)
write(io.vertx.reactivex.core.buffer.Buffer)
but with an handler
called when the operation completeschunk
- enc
- public HttpClientRequest continueHandler(Handler<Void> handler)
Expect
set to the value 100-continue
and the server responds with an interim HTTP response with a status code of 100
and a continue handler
has been set using this method, then the handler
will 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 sendHead()
method to force the request header to be written before the request has ended.
handler
- public HttpClientRequest sendHead()
end(java.lang.String)
is called on the request or any data is
written to it.
This is normally used to implement HTTP 100-continue handling, see for more information.
public HttpClientRequest sendHead(Handler<HttpVersion> completionHandler)
sendHead()
but with an handler after headers have been sent. The handler will be called with
the HttpVersion
if it can be determined or null otherwise.completionHandler
- public void end(String chunk)
end(java.lang.String)
but writes a String in UTF-8 encodingchunk
- public void end(String chunk, Handler<AsyncResult<Void>> handler)
end(java.lang.String)
but with an handler
called when the operation completeschunk
- handler
- public Completable rxEnd(String chunk)
end(java.lang.String)
but with an handler
called when the operation completeschunk
- public void end(String chunk, String enc)
end(java.lang.String)
but writes a String with the specified encodingchunk
- enc
- public void end(String chunk, String enc, Handler<AsyncResult<Void>> handler)
end(java.lang.String)
but with an handler
called when the operation completeschunk
- enc
- handler
- public Completable rxEnd(String chunk, String enc)
end(java.lang.String)
but with an handler
called when the operation completeschunk
- enc
- public void end(Buffer chunk)
end(java.lang.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 the Content-Length
header will be automatically setend
in interface WriteStream<Buffer>
chunk
- public void end(Buffer chunk, Handler<AsyncResult<Void>> handler)
end(java.lang.String)
but with an handler
called when the operation completesend
in interface WriteStream<Buffer>
chunk
- handler
- public Completable rxEnd(Buffer chunk)
end(java.lang.String)
but with an handler
called when the operation completeschunk
- public void end()
sendHead()
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,
end
in interface WriteStream<Buffer>
public void end(Handler<AsyncResult<Void>> handler)
end(java.lang.String)
but with an handler
called when the operation completesend
in interface WriteStream<Buffer>
handler
- public Completable rxEnd()
end(java.lang.String)
but with an handler
called when the operation completespublic HttpClientRequest setTimeout(long timeoutMs)
TimeoutException
will be passed to the exception handler (if provided) and
the request will be closed.
Calling this method more than once has the effect of canceling any existing timeout and starting the timeout from scratch.
timeoutMs
- The quantity of time in milliseconds.public HttpClientRequest pushHandler(Handler<HttpClientRequest> handler)
HttpClientRequest
, the following methods can be called:
In addition the handler should call the handler(io.vertx.core.Handler<io.vertx.reactivex.core.http.HttpClientResponse>)
method to set an handler to
process the response.handler
- the handlerpublic boolean reset()
0
.public boolean reset(long code)
code
code
- the error codepublic HttpConnection connection()
HttpConnection
associated with this request@Deprecated public HttpClientRequest connectionHandler(Handler<HttpConnection> handler)
handler
- the handlerpublic HttpClientRequest writeCustomFrame(int type, int flags, Buffer payload)
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 sendHead()
should be used for this purpose.
type
- the 8-bit frame typeflags
- the 8-bit frame flagspayload
- the frame payloadpublic int streamId()
public HttpClientRequest writeCustomFrame(HttpFrame frame)
writeCustomFrame(int, int, io.vertx.reactivex.core.buffer.Buffer)
but with an HttpFrame
.frame
- the frame to writepublic HttpClientRequest setStreamPriority(StreamPriority streamPriority)
streamPriority
- the priority of this request's streampublic StreamPriority getStreamPriority()
null
public HttpClientRequest putHeader(CharSequence name, CharSequence value)
putHeader(java.lang.String, java.lang.String)
but using CharSequencename
- value
- public HttpClientRequest putHeader(String name, Iterable<String> values)
name
- The header namevalues
- The header valuespublic HttpClientRequest putHeader(CharSequence name, Iterable<CharSequence> values)
putHeader(java.lang.String, java.lang.String)
but using CharSequencename
- values
- public static HttpClientRequest newInstance(HttpClientRequest arg)
Copyright © 2023 Eclipse. All rights reserved.