Interface ContentProvider
-
- All Superinterfaces:
java.lang.Iterable<java.nio.ByteBuffer>
- All Known Subinterfaces:
AsyncContentProvider
,ContentProvider.Typed
- All Known Implementing Classes:
AbstractTypedContentProvider
,ByteBufferContentProvider
,BytesContentProvider
,DeferredContentProvider
,FormContentProvider
,InputStreamContentProvider
,MultiPartContentProvider
,OutputStreamContentProvider
,PathContentProvider
,ProxyServlet.ProxyInputStreamContentProvider
,StringContentProvider
public interface ContentProvider extends java.lang.Iterable<java.nio.ByteBuffer>
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, anInputStream
), then the iterator implementation class must implementCloseable
and will be closed when the request is completed (either successfully or failed).Applications should rely on utility classes such as
ByteBufferContentProvider
orPathContentProvider
.ContentProvider
provides alength
of the content it represents. If the length is positive, it typically overrides anyContent-Length
header set by applications; if the length is negative, it typically removes anyContent-Length
header set by applications, resulting in chunked content (i.e.Transfer-Encoding: chunked
) being sent to the server.
-
-
Nested Class Summary
Nested Classes Modifier and Type Interface Description static interface
ContentProvider.Typed
An extension ofContentProvider
that provides a content type string to be used as aContent-Type
HTTP header in requests.
-
Method Summary
All Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description long
getLength()
default boolean
isReproducible()
Whether this ContentProvider can produce exactly the same content more than once.
-
-
-
Method Detail
-
getLength
long getLength()
- Returns:
- the content length, if known, or -1 if the content length is unknown
-
isReproducible
default boolean isReproducible()
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
-
-