Package org.htmlunit

# Class HttpWebConnection

java.lang.Object
org.htmlunit.HttpWebConnection

All Implemented Interfaces:
  `AutoCloseable`, `WebConnection`

public class HttpWebConnection extends Object implements WebConnection
Default implementation of `WebConnection`, using the HttpClient library to perform HTTP requests.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `HttpWebConnection(WebClient webClient)`
  Creates a new HTTP web connection instance.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected org.apache.http.client.methods.HttpRequestBase`
  `buildHttpMethod(HttpMethod submitMethod, URI uri)`
  Creates and returns a new HttpClient HTTP method based on the specified parameters.
  `void`
  `close()`
  `protected void`
  `configureHttpProcessorBuilder(org.apache.http.impl.client.HttpClientBuilder builder, WebRequest webRequest)`
  `protected org.apache.http.impl.client.HttpClientBuilder`
  `createHttpClientBuilder()`
  Creates the `HttpClientBuilder` that will be used by this WebClient.
  `static DownloadedContent`
  `downloadContent(InputStream is, int maxInMemory, File tempFileDirectory)`
  Reads the content of the stream and saves it in memory or on the file system.
  `protected WebResponse`
  `downloadResponse(org.apache.http.client.methods.HttpUriRequest httpMethod, WebRequest webRequest, org.apache.http.HttpResponse httpResponse, long startTime)`
  Downloads the response.
  `protected DownloadedContent`
  `downloadResponseBody(org.apache.http.HttpResponse httpResponse)`
  Downloads the response body.
  `protected org.apache.http.impl.client.HttpClientBuilder`
  `getHttpClientBuilder()`
  Lazily initializes the internal HTTP client.
  `protected List<org.apache.http.HttpRequestInterceptor>`
  `getHttpRequestInterceptors(WebRequest webRequest)`
  `WebResponse`
  `getResponse(WebRequest webRequest)`
  Submits a request and retrieves a response.
  `protected int`
  `getTimeout(WebRequest webRequest)`
  Returns the timeout to use for socket and connection timeouts for HttpConnectionManager.
  `String`
  `getVirtualHost()`
  Gets the virtual host.
  `protected WebResponse`
  `makeWebResponse(org.apache.http.HttpResponse httpResponse, WebRequest webRequest, DownloadedContent responseBody, long loadTime)`
  Converts an HttpMethod into a `WebResponse`.
  `protected WebResponse`
  `newWebResponseInstance(WebResponseData responseData, long loadTime, WebRequest webRequest)`
  Constructs an appropriate WebResponse.
  `protected void`
  `onResponseGenerated(org.apache.http.client.methods.HttpUriRequest httpMethod)`
  Called when the response has been generated.
  `void`
  `setVirtualHost(String virtualHost)`
  Sets the virtual host.

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Constructor Details

  - ### HttpWebConnection

    public HttpWebConnection(WebClient webClient)
    Creates a new HTTP web connection instance.
    Parameters:
      `webClient` - the WebClient that is using this connection

- ## Method Details

  - ### getResponse

    public WebResponse getResponse(WebRequest webRequest) throws IOException
    Submits a request and retrieves a response.
    Specified by:
      `getResponse` in interface `WebConnection`
    Parameters:
      `webRequest` - the request
    Returns:
      the response to the request defined by the specified request
    Throws:
      `IOException` - if an IO error occurs

  - ### onResponseGenerated

    protected void onResponseGenerated(org.apache.http.client.methods.HttpUriRequest httpMethod)
    Called when the response has been generated. Default action is to release the HttpMethod's connection. Subclasses may override.
    Parameters:
      `httpMethod` - the httpMethod used (can be null)

  - ### buildHttpMethod

    protected org.apache.http.client.methods.HttpRequestBase buildHttpMethod(HttpMethod submitMethod, URI uri)
    Creates and returns a new HttpClient HTTP method based on the specified parameters.
    Parameters:
      `submitMethod` - the submit method being used
      `uri` - the uri being used
    Returns:
      a new HttpClient HTTP method based on the specified parameters

  - ### getHttpClientBuilder

    protected org.apache.http.impl.client.HttpClientBuilder getHttpClientBuilder()
    Lazily initializes the internal HTTP client.
    Returns:
      the initialized HTTP client

  - ### getTimeout

    protected int getTimeout(WebRequest webRequest)
    Returns the timeout to use for socket and connection timeouts for HttpConnectionManager. Is overridden to 0 by StreamingWebConnection which keeps reading after a timeout and must have long running connections explicitly terminated.
    Parameters:
      `webRequest` - the request might have his own timeout
    Returns:
      the WebClient's timeout

  - ### createHttpClientBuilder

    protected org.apache.http.impl.client.HttpClientBuilder createHttpClientBuilder()
    Creates the `HttpClientBuilder` that will be used by this WebClient. Extensions may override this method in order to create a customized `HttpClientBuilder` instance (e.g. with a custom `ClientConnectionManager` to perform some tracking; see feature request 1438216).
    Returns:
      the `HttpClientBuilder` that will be used by this WebConnection

  - ### configureHttpProcessorBuilder

    protected void configureHttpProcessorBuilder(org.apache.http.impl.client.HttpClientBuilder builder, WebRequest webRequest)

  - ### setVirtualHost

    public void setVirtualHost(String virtualHost)
    Sets the virtual host.
    Parameters:
      `virtualHost` - the virtualHost to set

  - ### getVirtualHost

    public String getVirtualHost()
    Gets the virtual host.
    Returns:
      virtualHost The current virtualHost

  - ### makeWebResponse

    protected WebResponse makeWebResponse(org.apache.http.HttpResponse httpResponse, WebRequest webRequest, DownloadedContent responseBody, long loadTime)
    Converts an HttpMethod into a `WebResponse`.
    Parameters:
      `httpResponse` - the web server's response
      `webRequest` - the `WebRequest`
      `responseBody` - the `DownloadedContent`
      `loadTime` - the download time
    Returns:
      a wrapper for the downloaded body.

  - ### downloadResponse

    protected WebResponse downloadResponse(org.apache.http.client.methods.HttpUriRequest httpMethod, WebRequest webRequest, org.apache.http.HttpResponse httpResponse, long startTime) throws IOException
    Downloads the response. This calls `downloadResponseBody(HttpResponse)` and constructs the `WebResponse`.
    Parameters:
      `httpMethod` - the HttpUriRequest
      `webRequest` - the `WebRequest`
      `httpResponse` - the web server's response
      `startTime` - the download start time
    Returns:
      a wrapper for the downloaded body.
    Throws:
      `IOException` - in case of problem reading/saving the body

  - ### downloadResponseBody

    protected DownloadedContent downloadResponseBody(org.apache.http.HttpResponse httpResponse) throws IOException
    Downloads the response body.
    Parameters:
      `httpResponse` - the web server's response
    Returns:
      a wrapper for the downloaded body.
    Throws:
      `IOException` - in case of problem reading/saving the body

  - ### downloadContent

    public static DownloadedContent downloadContent(InputStream is, int maxInMemory, File tempFileDirectory) throws IOException
    Reads the content of the stream and saves it in memory or on the file system.
    Parameters:
      `is` - the stream to read
      `maxInMemory` - the maximumBytes to store in memory, after which save to a local file
      `tempFileDirectory` - the directory to be used or null for the system default
    Returns:
      a wrapper around the downloaded content
    Throws:
      `IOException` - in case of read issues

  - ### newWebResponseInstance

    protected WebResponse newWebResponseInstance(WebResponseData responseData, long loadTime, WebRequest webRequest)
    Constructs an appropriate WebResponse. May be overridden by subclasses to return a specialized WebResponse.
    Parameters:
      `responseData` - Data that was send back
      `loadTime` - How long the response took to be sent
      `webRequest` - the request used to get this response
    Returns:
      the new WebResponse

  - ### getHttpRequestInterceptors

    protected List<org.apache.http.HttpRequestInterceptor> getHttpRequestInterceptors(WebRequest webRequest)

  - ### close

    public void close()
    Specified by:
      `close` in interface `AutoCloseable`
    Specified by:
      `close` in interface `WebConnection`