Interface ContentProvider

All Superinterfaces:
All Known Subinterfaces:
AsyncContentProvider, ContentProvider.Typed
All Known Implementing Classes:
AbstractTypedContentProvider, ByteBufferContentProvider, BytesContentProvider, DeferredContentProvider, FormContentProvider, InputStreamContentProvider, MultiPartContentProvider, OutputStreamContentProvider, PathContentProvider, StringContentProvider

@Deprecated public interface ContentProvider extends Iterable<ByteBuffer>
use Request.Content instead, or toRequestContent(ContentProvider) to convert ContentProvider to Request.Content.

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.

  • Method Details

    • toRequestContent

      static Request.Content toRequestContent(ContentProvider provider)

      Converts a ContentProvider to a Request.Content.

      provider - the ContentProvider to convert
      a Request.Content that wraps the ContentProvider
    • getLength

      long getLength()
      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 to Iterable.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.

      whether the content can be produced more than once