Package org.htmlunit
Class HttpWebConnection
- java.lang.Object
-
- org.htmlunit.HttpWebConnection
-
- All Implemented Interfaces:
java.lang.AutoCloseable,WebConnection
public class HttpWebConnection extends java.lang.Object implements WebConnection
Default implementation ofWebConnection, 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
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected org.apache.http.client.methods.HttpRequestBasebuildHttpMethod(HttpMethod submitMethod, java.net.URI uri)Creates and returns a new HttpClient HTTP method based on the specified parameters.voidclose()protected voidconfigureHttpProcessorBuilder(org.apache.http.impl.client.HttpClientBuilder builder, WebRequest webRequest)protected org.apache.http.impl.client.HttpClientBuildercreateHttpClientBuilder()Creates theHttpClientBuilderthat will be used by this WebClient.static DownloadedContentdownloadContent(java.io.InputStream is, int maxInMemory)Reads the content of the stream and saves it in memory or on the file system.protected DownloadedContentdownloadResponseBody(org.apache.http.HttpResponse httpResponse)Downloads the response body.protected org.apache.http.impl.client.HttpClientBuildergetHttpClientBuilder()Lazily initializes the internal HTTP client.protected java.util.List<org.apache.http.HttpRequestInterceptor>getHttpRequestInterceptors(WebRequest webRequest)WebResponsegetResponse(WebRequest webRequest)Submits a request and retrieves a response.protected intgetTimeout(WebRequest webRequest)Returns the timeout to use for socket and connection timeouts for HttpConnectionManager.java.lang.StringgetVirtualHost()Gets the virtual host.protected WebResponsemakeWebResponse(org.apache.http.HttpResponse httpResponse, WebRequest webRequest, DownloadedContent responseBody, long loadTime)Converts an HttpMethod into a WebResponse.protected WebResponsenewWebResponseInstance(WebResponseData responseData, long loadTime, WebRequest webRequest)Constructs an appropriate WebResponse.protected voidonResponseGenerated(org.apache.http.client.methods.HttpUriRequest httpMethod)Called when the response has been generated.voidsetVirtualHost(java.lang.String virtualHost)Sets the virtual host.
-
-
-
Constructor Detail
-
HttpWebConnection
public HttpWebConnection(WebClient webClient)
Creates a new HTTP web connection instance.- Parameters:
webClient- the WebClient that is using this connection
-
-
Method Detail
-
getResponse
public WebResponse getResponse(WebRequest webRequest) throws java.io.IOException
Submits a request and retrieves a response.- Specified by:
getResponsein interfaceWebConnection- Parameters:
webRequest- the request- Returns:
- the response to the request defined by the specified request
- Throws:
java.io.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, java.net.URI uri)
Creates and returns a new HttpClient HTTP method based on the specified parameters.- Parameters:
submitMethod- the submit method being useduri- 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 theHttpClientBuilderthat will be used by this WebClient. Extensions may override this method in order to create a customizedHttpClientBuilderinstance (e.g. with a customClientConnectionManagerto perform some tracking; see feature request 1438216).- Returns:
- the
HttpClientBuilderthat will be used by this WebConnection
-
configureHttpProcessorBuilder
protected void configureHttpProcessorBuilder(org.apache.http.impl.client.HttpClientBuilder builder, WebRequest webRequest)
-
setVirtualHost
public void setVirtualHost(java.lang.String virtualHost)
Sets the virtual host.- Parameters:
virtualHost- the virtualHost to set
-
getVirtualHost
public java.lang.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.
-
downloadResponseBody
protected DownloadedContent downloadResponseBody(org.apache.http.HttpResponse httpResponse) throws java.io.IOException
Downloads the response body.- Parameters:
httpResponse- the web server's response- Returns:
- a wrapper for the downloaded body.
- Throws:
java.io.IOException- in case of problem reading/saving the body
-
downloadContent
public static DownloadedContent downloadContent(java.io.InputStream is, int maxInMemory) throws java.io.IOException
Reads the content of the stream and saves it in memory or on the file system.- Parameters:
is- the stream to readmaxInMemory- the maximumBytes to store in memory, after which save to a local file- Returns:
- a wrapper around the downloaded content
- Throws:
java.io.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 backwebRequest- the request used to get this responseloadTime- How long the response took to be sent- Returns:
- the new WebResponse
-
getHttpRequestInterceptors
protected java.util.List<org.apache.http.HttpRequestInterceptor> getHttpRequestInterceptors(WebRequest webRequest)
-
close
public void close()
- Specified by:
closein interfacejava.lang.AutoCloseable- Specified by:
closein interfaceWebConnection
-
-