Class HttpRequest

java.lang.Object
com.azure.core.http.HttpRequest

public class HttpRequest extends Object
Represents an outgoing HTTP request.

This class encapsulates an HTTP request, including the HTTP method, URL, headers, and body. It provides methods to set and get these properties.

This class is useful when you want to create an HTTP request to send to a server. For example, you can use it to create a GET request to retrieve a resource, a POST request to create a resource, a PUT request to update a resource, or a DELETE request to delete a resource.

Note: This class provides a copy() method to create a copy of the HTTP request. This is useful when you want to modify the HTTP request without affecting the original request.

  • Constructor Details

    • HttpRequest

      public HttpRequest(HttpMethod httpMethod, URL url)
      Create a new HttpRequest instance.
      Parameters:
      httpMethod - the HTTP request method
      url - the target address to send the request to
    • HttpRequest

      public HttpRequest(HttpMethod httpMethod, String url)
      Create a new HttpRequest instance.
      Parameters:
      httpMethod - the HTTP request method
      url - the target address to send the request to
      Throws:
      IllegalArgumentException - if url is null or it cannot be parsed into a valid URL.
    • HttpRequest

      public HttpRequest(HttpMethod httpMethod, URL url, HttpHeaders headers)
      Create a new HttpRequest instance.
      Parameters:
      httpMethod - the HTTP request method
      url - the target address to send the request to
      headers - the HTTP headers to use with this request
    • HttpRequest

      public HttpRequest(HttpMethod httpMethod, URL url, HttpHeaders headers, Flux<ByteBuffer> body)
      Create a new HttpRequest instance.
      Parameters:
      httpMethod - the HTTP request method
      url - the target address to send the request to
      headers - the HTTP headers to use with this request
      body - the request content
    • HttpRequest

      public HttpRequest(HttpMethod httpMethod, URL url, HttpHeaders headers, BinaryData body)
      Create a new HttpRequest instance.
      Parameters:
      httpMethod - the HTTP request method
      url - the target address to send the request to
      headers - the HTTP headers to use with this request
      body - the request content
  • Method Details

    • getHttpMethod

      public HttpMethod getHttpMethod()
      Get the request method.
      Returns:
      the request method
    • setHttpMethod

      public HttpRequest setHttpMethod(HttpMethod httpMethod)
      Set the request method.
      Parameters:
      httpMethod - the request method
      Returns:
      this HttpRequest
    • getUrl

      public URL getUrl()
      Get the target address.
      Returns:
      the target address
    • setUrl

      public HttpRequest setUrl(URL url)
      Set the target address to send the request to.
      Parameters:
      url - target address as URL
      Returns:
      this HttpRequest
    • setUrl

      public HttpRequest setUrl(String url)
      Set the target address to send the request to.
      Parameters:
      url - target address as a String
      Returns:
      this HttpRequest
      Throws:
      IllegalArgumentException - if url is null or it cannot be parsed into a valid URL.
    • getHeaders

      public HttpHeaders getHeaders()
      Get the request headers.
      Returns:
      headers to be sent
    • setHeaders

      public HttpRequest setHeaders(HttpHeaders headers)
      Set the request headers.
      Parameters:
      headers - the set of headers
      Returns:
      this HttpRequest
    • setHeader

      @Deprecated public HttpRequest setHeader(String name, String value)
      Deprecated.
      Use setHeader(HttpHeaderName, String) instead as is offers better performance.
      Set a request header, replacing any existing value. A null for value will remove the header if one with matching name exists.
      Parameters:
      name - the header name
      value - the header value
      Returns:
      this HttpRequest
    • setHeader

      public HttpRequest setHeader(HttpHeaderName headerName, String value)
      Set a request header, replacing any existing value. A null for value will remove the header if one with matching name exists.
      Parameters:
      headerName - the header name
      value - the header value
      Returns:
      this HttpRequest
    • getBody

      public Flux<ByteBuffer> getBody()
      Get the request content.
      Returns:
      the content to be sent
    • getBodyAsBinaryData

      public BinaryData getBodyAsBinaryData()
      Get the request content.
      Returns:
      the content to be sent
    • setBody

      public HttpRequest setBody(String content)
      Set the request content.

      The Content-Length header will be set based on the given content's length.

      Parameters:
      content - the request content
      Returns:
      this HttpRequest
    • setBody

      public HttpRequest setBody(byte[] content)
      Set the request content.

      The Content-Length header will be set based on the given content's length.

      Parameters:
      content - the request content
      Returns:
      this HttpRequest
    • setBody

      public HttpRequest setBody(Flux<ByteBuffer> content)
      Set request content.

      Caller must set the Content-Length header to indicate the length of the content, or use Transfer-Encoding: chunked.

      Parameters:
      content - the request content
      Returns:
      this HttpRequest
    • setBody

      public HttpRequest setBody(BinaryData content)
      Set request content.

      If provided content has known length, i.e. BinaryData.getLength() returns non-null then Content-Length header is updated. Otherwise, if provided content has unknown length, i.e. BinaryData.getLength() returns null then the caller must set the Content-Length header to indicate the length of the content, or use Transfer-Encoding: chunked.

      Parameters:
      content - the request content
      Returns:
      this HttpRequest
    • copy

      public HttpRequest copy()
      Creates a copy of the request.

      The main purpose of this is so that this HttpRequest can be changed and the resulting HttpRequest can be a backup. This means that the cloned HttpHeaders and body must not be able to change from side effects of this HttpRequest.

      Returns:
      a new HTTP request instance with cloned instances of all mutable properties.