# Class HTTPHC3Impl

java.lang.Object
org.apache.jmeter.protocol.http.sampler.HTTPAbstractImpl
org.apache.jmeter.protocol.http.sampler.HTTPHCAbstractImpl
org.apache.jmeter.protocol.http.sampler.HTTPHC3Impl

All Implemented Interfaces:
  `HTTPConstantsInterface, Interruptible`

public class HTTPHC3Impl extends HTTPHCAbstractImpl
HTTP sampler using Apache (Jakarta) Commons HttpClient 3.1.

## Field Summary

### Fields inherited from class HTTPHCAbstractImpl

`CPS_HTTP, CPS_HTTPS, HTTP_VERSION, localAddress, localHost, NONPROXY_HOSTS, nonProxyHostFull, nonProxyHostSuffix, nonProxyHostSuffixSize, PROXY_DEFINED, PROXY_DOMAIN, PROXY_HOST, PROXY_PASS, PROXY_PORT, PROXY_USER, SO_TIMEOUT, USE_CACHED_SSL_CONTEXT, USE_LOOPBACK`

### Fields inherited from class HTTPAbstractImpl

`testElement`

### Fields inherited from interface HTTPConstantsInterface

`APPLICATION_X_WWW_FORM_URLENCODED, CACHE_CONTROL, CONNECT, CONNECTION_CLOSE, COPY, DATE, DEFAULT_HTTP_PORT, DEFAULT_HTTP_PORT_STRING, DEFAULT_HTTPS_PORT, DEFAULT_HTTPS_PORT_STRING, DELETE, ENCODING_GZIP, ETAG, EXPIRES, GET, HEAD, HEADER_AUTHORIZATION, HEADER_CONNECTION, HEADER_CONTENT_DISPOSITION, HEADER_CONTENT_ENCODING, HEADER_CONTENT_LENGTH, HEADER_CONTENT_TYPE, HEADER_COOKIE, HEADER_HOST, HEADER_LOCAL_ADDRESS, HEADER_LOCATION, HEADER_SET_COOKIE, HTTP_1_1, IF_MODIFIED_SINCE, IF_NONE_MATCH, KEEP_ALIVE, LAST_MODIFIED, LOCK, MKCALENDAR, MKCOL, MOVE, MULTIPART_FORM_DATA, OPTIONS, PATCH, POST, PROPFIND, PROPPATCH, PROTOCOL_HTTP, PROTOCOL_HTTPS, PUT, REPORT, TRACE, TRANSFER_ENCODING, UNLOCK`

## Constructor Summary

Constructors
Modifier
Constructor
Description
`protected`
`HTTPHC3Impl(HTTPSamplerBase base)`

## Method Summary

Modifier and Type
Method
Description
`protected String`
`getConnectionHeaders(HttpMethod method)`
Get all the request headers for the `HttpMethod`
`protected String`
`getResponseHeaders(HttpMethod method)`
Gets the ResponseHeaders
`boolean`
`interrupt()`
Interrupt the current operation if possible.
`protected void`
`notifyFirstSampleAfterLoopRestart()`
`protected HTTPSampleResult`
`sample(URL url, String method, boolean areFollowingRedirect, int frameDepth)`
Samples the URL passed in and stores the result in `HTTPSampleResult`, following redirects and downloading page resources as appropriate.
`protected void`
`saveConnectionCookies(HttpMethod method, URL u, CookieManager cookieManager)`
From the `HttpMethod`, store all the "set-cookie" key-pair values in the cookieManager of the `UrlConfig`.
`protected void`
`setDefaultRequestHeaders(HttpMethod httpMethod)`
Set any default request headers to include
`protected HttpClient`
`setupConnection(URL u, HttpMethodBase httpMethod, HTTPSampleResult res)`
Returns an `HttpConnection` fully ready to attempt connection.
`protected void`
`threadFinished()`

### Methods inherited from class HTTPHCAbstractImpl

`isDynamicProxy, isNonProxy, isNullOrEmptyTrimmed, isPartialMatch, isStaticProxy`

### Methods inherited from class HTTPAbstractImpl

`errorResult, getArguments, getAuthManager, getAutoRedirects, getCacheManager, getConnectTimeout, getContentEncoding, getCookieManager, getDoBrowserCompatibleMultipart, getHeaderManager, getHTTPFiles, getIpSource, getIpSourceAddress, getProxyHost, getProxyPass, getProxyPortInt, getProxyUser, getResponseTimeout, getSendFileAsPostBody, getSendParameterValuesAsPostBody, getUseKeepAlive, getUseMultipartForPost, hasArguments, isMonitor, isSuccessCode, notifySSLContextWasReset, readResponse, readResponse, resultProcessing, setUseKeepAlive, updateSampleResultForResourceInCache`

### Methods inherited from class Object

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

## Constructor Details

### HTTPHC3Impl

protected HTTPHC3Impl(HTTPSamplerBase base)

## Method Details

### sample

protected HTTPSampleResult sample(URL url, String method, boolean areFollowingRedirect, int frameDepth)
Samples the URL passed in and stores the result in `HTTPSampleResult`, following redirects and downloading page resources as appropriate.

When getting a redirect target, redirects are not followed and resources are not downloaded. The caller will take care of this.

Specified by:
  `sample` in class `HTTPAbstractImpl`
Parameters:
  `url` - URL to sample
  `method` - HTTP method: GET, POST,...
  `areFollowingRedirect` - whether we're getting a redirect target
  `frameDepth` - Depth of this target in the frame structure. Used only to prevent infinite recursion.
Returns:
  results of the sampling

### setupConnection

protected HttpClient setupConnection(URL u, HttpMethodBase httpMethod, HTTPSampleResult res) throws IOException
Returns an `HttpConnection` fully ready to attempt connection. This means it sets the request method (GET or POST), headers, cookies, and authorization for the URL request.

The request infos are saved into the sample result if one is provided.

Parameters:
  `u` - `URL` of the URL request
  `httpMethod` - GET/PUT/HEAD etc
  `res` - sample result to save request infos to
Returns:
  `HttpConnection` ready for .connect
Throws:
  `IOException` - if an I/O Exception occurs

### setDefaultRequestHeaders

protected void setDefaultRequestHeaders(HttpMethod httpMethod)
Set any default request headers to include

Parameters:
  `httpMethod` - the HttpMethod used for the request

### getResponseHeaders

protected String getResponseHeaders(HttpMethod method)
Gets the ResponseHeaders

Parameters:
  `method` - the method used to perform the request
Returns:
  string containing the headers, one per line

### getConnectionHeaders

protected String getConnectionHeaders(HttpMethod method)
Get all the request headers for the `HttpMethod`

Parameters:
  `method` - `HttpMethod` which represents the request
Returns:
  the headers as a string

### saveConnectionCookies

protected void saveConnectionCookies(HttpMethod method, URL u, CookieManager cookieManager)
From the `HttpMethod`, store all the "set-cookie" key-pair values in the cookieManager of the `UrlConfig`.

Parameters:
  `method` - `HttpMethod` which represents the request
  `u` - `URL` of the URL request
  `cookieManager` - the `CookieManager` containing all the cookies

### threadFinished

protected void threadFinished()

Overrides:
  `threadFinished` in class `HTTPAbstractImpl`

### notifyFirstSampleAfterLoopRestart

protected void notifyFirstSampleAfterLoopRestart()

Overrides:
  `notifyFirstSampleAfterLoopRestart` in class `HTTPAbstractImpl`

### interrupt

public boolean interrupt()
Interrupt the current operation if possible.

Returns:
  `true` if there was an operation to interrupt.