Class ResponseInputStream<ResponseT>

All Implemented Interfaces:
Closeable, AutoCloseable, Releasable, Abortable

public final class ResponseInputStream<ResponseT> extends SdkFilterInputStream implements Abortable
Input stream that provides access to the unmarshalled POJO response returned by the service in addition to the streamed contents. This input stream should be closed after all data has been read from the stream.

NOTE: You must read this stream promptly to avoid automatic cancellation. The default timeout for reading is 60 seconds, which starts when the response stream is ready. If read() is not invoked before the timeout, the stream will automatically abort to prevent resource leakage.

The timeout can be customized by passing a Duration to the constructor, or disabled entirely by passing Duration.ZERO or a negative Duration.

Note about the Apache http client: This input stream can be used to leverage a feature of the Apache http client where connections are released back to the connection pool to be reused. As such, calling close on this input stream will result in reading the remaining data from the stream and leaving the connection open, even if the stream was only partially read from. For large http payload, this means reading all of the http body before releasing the connection which may add latency.

If it is not desired to read remaining data from the stream, you can explicitly abort the connection via abort() instead. This will close the underlying connection and require establishing a new HTTP connection on subsequent requests which may outweigh the cost of reading the additional data.

The Url Connection and Crt http clients are not subject to this behaviour so the close and abort methods will behave similarly with them.