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.HttpRequestBase
buildHttpMethod(HttpMethod submitMethod, java.net.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 theHttpClientBuilder
that will be used by this WebClient.static DownloadedContent
downloadContent(java.io.InputStream is, int maxInMemory, java.io.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 java.util.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.java.lang.String
getVirtualHost()
Gets the virtual host.protected WebResponse
makeWebResponse(org.apache.http.HttpResponse httpResponse, WebRequest webRequest, DownloadedContent responseBody, long loadTime)
Converts an HttpMethod into aWebResponse
.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(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:
getResponse
in 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 theHttpClientBuilder
that will be used by this WebClient. Extensions may override this method in order to create a customizedHttpClientBuilder
instance (e.g. with a customClientConnectionManager
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(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 aWebResponse
.- Parameters:
httpResponse
- the web server's responsewebRequest
- theWebRequest
responseBody
- theDownloadedContent
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 java.io.IOException
Downloads the response. This callsdownloadResponseBody(HttpResponse)
and constructs theWebResponse
.- Parameters:
httpMethod
- the HttpUriRequestwebRequest
- theWebRequest
httpResponse
- the web server's responsestartTime
- the download start time- Returns:
- a wrapper for the downloaded body.
- Throws:
java.io.IOException
- in case of problem reading/saving the body
-
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, java.io.File tempFileDirectory) 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 filetempFileDirectory
- the directory to be used or null for the system default- 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:
close
in interfacejava.lang.AutoCloseable
- Specified by:
close
in interfaceWebConnection
-
-