Interface HttpMessage

All Superinterfaces:
HttpMessage
All Known Implementing Classes:
HttpRequest, HttpResponse

public interface HttpMessage extends HttpMessage
Common base class of HttpRequest and HttpResponse.
  • Method Details

    • self

      HttpMessage self()
    • isRequest

      boolean isRequest()
      Description copied from interface: HttpMessage
      Is this instance a request.
      Specified by:
      isRequest in interface HttpMessage
    • isResponse

      boolean isResponse()
      Description copied from interface: HttpMessage
      Is this instance a response.
      Specified by:
      isResponse in interface HttpMessage
    • headers

      scala.collection.immutable.Seq<HttpHeader> headers()
    • attributes

      scala.collection.immutable.Map<AttributeKey<?>,Object> attributes()
    • entity

      ResponseEntity entity()
      Description copied from interface: HttpMessage
      The entity of this message.
      Specified by:
      entity in interface HttpMessage
    • protocol

      HttpProtocol protocol()
      Description copied from interface: HttpMessage
      The protocol of this message.
      Specified by:
      protocol in interface HttpMessage
    • discardEntityBytes

      HttpMessage.DiscardedEntity discardEntityBytes(akka.stream.Materializer mat)
      Discards the entities data bytes by running the dataBytes Source contained in this HttpMessage.

      Note: It is crucial that entities are either discarded, or consumed by running the underlying Source as otherwise the lack of consuming of the data will trigger back-pressure to the underlying TCP connection (as designed), however possibly leading to an idle-timeout that will close the connection, instead of just having ignored the data.

      Warning: It is not allowed to discard and/or consume the entity.dataBytes more than once as the stream is directly attached to the "live" incoming data source from the underlying TCP connection. Allowing it to be consumable twice would require buffering the incoming data, thus defeating the purpose of its streaming nature. If the dataBytes source is materialized a second time, it will fail with an "stream can cannot be materialized more than once" exception.

      When called on Strict entities or sources whose values can be buffered in memory, the above warnings can be ignored. Repeated materialization is not necessary in this case, avoiding the mentioned exceptions due to the data being held in memory.

      In future versions, more automatic ways to warn or resolve these situations may be introduced, see issue #18716.

      Specified by:
      discardEntityBytes in interface HttpMessage
      Parameters:
      mat - (undocumented)
      Returns:
      (undocumented)
    • discardEntityBytes

      HttpMessage.DiscardedEntity discardEntityBytes(akka.actor.ClassicActorSystemProvider system)
      Java API
      Specified by:
      discardEntityBytes in interface HttpMessage
    • withHeaders

      HttpMessage withHeaders(HttpHeader firstHeader, scala.collection.immutable.Seq<HttpHeader> otherHeaders)
      Returns a copy of this message with the list of headers set to the given ones.
    • withHeaders

      HttpMessage withHeaders(scala.collection.immutable.Seq<HttpHeader> headers)
      Returns a copy of this message with the list of headers set to the given ones.
    • withDefaultHeaders

      HttpMessage withDefaultHeaders(HttpHeader firstHeader, scala.collection.immutable.Seq<HttpHeader> otherHeaders)
      Returns a new message that contains all of the given default headers which didn't already exist (by case-insensitive header name) in this message.
      Parameters:
      firstHeader - (undocumented)
      otherHeaders - (undocumented)
      Returns:
      (undocumented)
    • withDefaultHeaders

      HttpMessage withDefaultHeaders(scala.collection.immutable.Seq<HttpHeader> defaultHeaders)
      Returns a new message that contains all of the given default headers which didn't already exist (by case-insensitive header name) in this message.
      Parameters:
      defaultHeaders - (undocumented)
      Returns:
      (undocumented)
    • withAttributes

      HttpMessage withAttributes(scala.collection.immutable.Map<AttributeKey<?>,Object> headers)
      Returns a copy of this message with the attributes set to the given ones.
    • withEntity

      HttpMessage withEntity(RequestEntity entity)
      Returns a copy of this message with the entity set to the given one.
    • toStrict

      scala.concurrent.Future<HttpMessage> toStrict(scala.concurrent.duration.FiniteDuration timeout, scala.concurrent.ExecutionContext ec, akka.stream.Materializer fm)
      Returns a shareable and serializable copy of this message with a strict entity.
    • toStrict

      scala.concurrent.Future<HttpMessage> toStrict(scala.concurrent.duration.FiniteDuration timeout, long maxBytes, scala.concurrent.ExecutionContext ec, akka.stream.Materializer fm)
      Returns a shareable and serializable copy of this message with a strict entity.
    • withHeadersAndEntity

      HttpMessage withHeadersAndEntity(scala.collection.immutable.Seq<HttpHeader> headers, RequestEntity entity)
      Returns a copy of this message with the entity and headers set to the given ones.
    • mapHeaders

      HttpMessage mapHeaders(scala.Function1<scala.collection.immutable.Seq<HttpHeader>,scala.collection.immutable.Seq<HttpHeader>> f)
      Returns a copy of this message with the list of headers transformed by the given function
    • mapAttributes

      HttpMessage mapAttributes(scala.Function1<scala.collection.immutable.Map<AttributeKey<?>,Object>,scala.collection.immutable.Map<AttributeKey<?>,Object>> f)
      Returns a copy of this message with the attributes transformed by the given function
    • encoding

      HttpEncoding encoding()
      The content encoding as specified by the Content-Encoding header. If no Content-Encoding header is present the default value 'identity' is returned.
      Returns:
      (undocumented)
    • header

      <T extends HttpHeader> scala.Option<T> header(scala.reflect.ClassTag<T> evidence$1)
      Returns the first header of the given type if there is one
    • headers

      <T extends HttpHeader> scala.collection.immutable.Seq<T> headers(scala.reflect.ClassTag<T> evidence$2)
      Returns all the headers of the given type
    • attribute

      <T> scala.Option<T> attribute(AttributeKey<T> key, JavaMapping<AttributeKey<T>,AttributeKey<T>> ev)
    • connectionCloseExpected

      boolean connectionCloseExpected()
      Returns true if this message is an: - HttpRequest and the client does not want to reuse the connection after the response for this request has been received - HttpResponse and the server will close the connection after this response
      Returns:
      (undocumented)
    • addHeader

      HttpMessage addHeader(HttpHeader header)
      Return a new instance with the given header added to the headers sequence. It's undefined where the header is added to the sequence
    • addAttribute

      <T> HttpMessage addAttribute(AttributeKey<T> key, T value)
    • addCredentials

      HttpMessage addCredentials(HttpCredentials credentials)
    • removeHeader

      HttpMessage removeHeader(String headerName)
      Removes the header with the given name (case-insensitive)
    • removeAttribute

      HttpMessage removeAttribute(AttributeKey<?> key)
    • withEntity

      HttpMessage withEntity(String string)
    • withEntity

      HttpMessage withEntity(byte[] bytes)
    • withEntity

      HttpMessage withEntity(akka.util.ByteString bytes)
    • withEntity

      HttpMessage withEntity(ContentType.NonBinary contentType, String string)
    • withEntity

      HttpMessage withEntity(ContentType contentType, byte[] bytes)
    • withEntity

      HttpMessage withEntity(ContentType contentType, akka.util.ByteString bytes)
    • withEntity

      HttpMessage withEntity(ContentType contentType, File file)
    • withEntity

      HttpMessage withEntity(ContentType contentType, Path file)
    • transformEntityDataBytes

      <M> HttpMessage transformEntityDataBytes(akka.stream.Graph<akka.stream.FlowShape<akka.util.ByteString,akka.util.ByteString>,M> transformer)
    • getHeaders

      Iterable<HttpHeader> getHeaders()
      Java API
      Specified by:
      getHeaders in interface HttpMessage
    • getHeader

      <T extends HttpHeader> Optional<T> getHeader(Class<T> headerClass)
      Java API
      Specified by:
      getHeader in interface HttpMessage
    • getHeaders

      <T extends HttpHeader> Iterable<T> getHeaders(Class<T> headerClass)
      Java API
      Specified by:
      getHeaders in interface HttpMessage
    • getHeader

      Optional<HttpHeader> getHeader(String headerName)
      Java API
      Specified by:
      getHeader in interface HttpMessage
    • addHeaders

      HttpMessage addHeaders(Iterable<HttpHeader> headers)
      Java API
    • withHeaders

      HttpMessage withHeaders(Iterable<HttpHeader> headers)
      Java API
    • getAttribute

      <T> Optional<T> getAttribute(AttributeKey<T> attributeKey)
      Java API
      Specified by:
      getAttribute in interface HttpMessage
    • toStrict

      CompletionStage<HttpMessage> toStrict(long timeoutMillis, Executor ec, akka.stream.Materializer materializer)
      Java API
    • toStrict

      CompletionStage<HttpMessage> toStrict(long timeoutMillis, long maxBytes, Executor ec, akka.stream.Materializer materializer)
      Java API
    • toStrict

      CompletionStage<HttpMessage> toStrict(long timeoutMillis, akka.actor.ClassicActorSystemProvider system)
      Java API
    • toStrict

      CompletionStage<HttpMessage> toStrict(long timeoutMillis, long maxBytes, akka.actor.ClassicActorSystemProvider system)
      Java API