Interface ContentProvider
- All Superinterfaces:
Iterable<ByteBuffer>
- All Known Subinterfaces:
AsyncContentProvider
,ContentProvider.Typed
- All Known Implementing Classes:
AbstractTypedContentProvider
,ByteBufferContentProvider
,BytesContentProvider
,DeferredContentProvider
,FormContentProvider
,InputStreamContentProvider
,MultiPartContentProvider
,OutputStreamContentProvider
,PathContentProvider
,StringContentProvider
ContentProvider
provides a source of request content.
Implementations should return an Iterator
over the request content.
If the request content comes from a source that needs to be closed (for
example, an InputStream
), then the iterator implementation class
must implement Closeable
and will be closed when the request is
completed (either successfully or failed).
Applications should rely on utility classes such as ByteBufferContentProvider
or PathContentProvider
.
ContentProvider
provides a length
of the content
it represents.
If the length is positive, it typically overrides any Content-Length
header set by applications; if the length is negative, it typically removes
any Content-Length
header set by applications, resulting in chunked
content (i.e. Transfer-Encoding: chunked
) being sent to the server.
-
Nested Class Summary
-
Method Summary
Modifier and TypeMethodDescriptionlong
Deprecated.default boolean
Deprecated.Whether this ContentProvider can produce exactly the same content more than once.static Request.Content
toRequestContent
(ContentProvider provider) Deprecated.Converts a ContentProvider to aRequest.Content
.Methods inherited from interface java.lang.Iterable
forEach, iterator, spliterator
-
Method Details
-
toRequestContent
Deprecated.Converts a ContentProvider to a
Request.Content
.- Parameters:
provider
- the ContentProvider to convert- Returns:
- a
Request.Content
that wraps the ContentProvider
-
getLength
long getLength()Deprecated.- Returns:
- the content length, if known, or -1 if the content length is unknown
-
isReproducible
default boolean isReproducible()Deprecated.Whether this ContentProvider can produce exactly the same content more than once.
Implementations should return
true
only if the content can be produced more than once, which means that invocations toIterable.iterator()
must return a new, independent, iterator instance over the content.The
HttpClient
implementation may use this method in particular cases where it detects that it is safe to retry a request that failed.- Returns:
- whether the content can be produced more than once
-
Request.Content
instead, ortoRequestContent(ContentProvider)
to convert ContentProvider toRequest.Content
.