Class HTTPHC4Impl
java.lang.Object
org.apache.jmeter.protocol.http.sampler.HTTPAbstractImpl
org.apache.jmeter.protocol.http.sampler.HTTPHCAbstractImpl
org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl
- All Implemented Interfaces:
HTTPConstantsInterface
,Interruptible
HTTP Sampler using Apache HttpClient 4.x.
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic final class
static final class
Implementation that allows GET method to have a body -
Field Summary
Fields inherited from class org.apache.jmeter.protocol.http.sampler.HTTPHCAbstractImpl
CPS_HTTP, CPS_HTTPS, HTTP_VERSION, localAddress, LOCALHOST, NON_PROXY_HOST_SUFFIX_SIZE, NONPROXY_HOSTS, nonProxyHostFull, nonProxyHostSuffix, PROXY_DEFINED, PROXY_DOMAIN, PROXY_HOST, PROXY_PASS, PROXY_PORT, PROXY_SCHEME, PROXY_USER, RESET_STATE_ON_THREAD_GROUP_ITERATION, resetStateOnThreadGroupIteration, SO_TIMEOUT, USE_CACHED_SSL_CONTEXT, USE_LOOPBACK
Fields inherited from class org.apache.jmeter.protocol.http.sampler.HTTPAbstractImpl
ADD_CONTENT_TYPE_TO_POST_IF_MISSING, ALL_EXCEPT_COOKIE, ONLY_COOKIE, testElement
Fields inherited from interface org.apache.jmeter.protocol.http.util.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_BROTLI, ENCODING_DEFLATE, 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_COOKIE_IN_REQUEST, 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, SC_MOVED_PERMANENTLY, SC_MOVED_TEMPORARILY, SC_PERMANENT_REDIRECT, SC_SEE_OTHER, SC_TEMPORARY_REDIRECT, SEARCH, TRACE, TRANSFER_ENCODING, UNLOCK, VARY
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected HTTPSampleResult
createSampleResult
(URL url, String method) Create HTTPSampleResult filling url, method and SampleLabel.protected org.apache.http.client.AuthenticationStrategy
protected void
handleMethod
(String method, HTTPSampleResult result, org.apache.http.client.methods.HttpRequestBase httpRequest, org.apache.http.protocol.HttpContext localContext) Setup Body of request if different from GET.boolean
Interrupt the current operation if possible.protected void
protected HTTPSampleResult
protected String
sendEntityData
(org.apache.http.client.methods.HttpEntityEnclosingRequestBase entity) Creates the entity data to be sent.protected String
setConnectionCookie
(org.apache.http.HttpRequest request, URL url, CookieManager cookieManager) Extracts all the required cookies for that particular URL request and sets them in theHttpMethod
passed in.protected static void
setConnectionHeaders
(org.apache.http.client.methods.HttpRequestBase request, URL url, HeaderManager headerManager, CacheManager cacheManager) Extracts all the required non-cookie headers for that particular URL request and sets them in theHttpMethod
passed inprotected void
setDefaultRequestHeaders
(org.apache.http.HttpRequest request) Set any default request headers to includeprotected String
setupHttpEntityEnclosingRequestData
(org.apache.http.client.methods.HttpEntityEnclosingRequestBase entityEnclosingRequest) protected void
setupRequest
(URL url, org.apache.http.client.methods.HttpRequestBase httpRequest, HTTPSampleResult res) Setup following elements on httpRequest: ConnRoutePNames.LOCAL_ADDRESS enabling IP-SPOOFING Socket and connection timeout Redirect handling Keep Alive header or Connection Close Calls setConnectionHeaders to setup headers Calls setConnectionCookie to setup Cookieprotected void
Methods inherited from class org.apache.jmeter.protocol.http.sampler.HTTPHCAbstractImpl
isDynamicProxy, isNonProxy, isNullOrEmptyTrimmed, isPartialMatch, isStaticProxy
Methods inherited from class org.apache.jmeter.protocol.http.sampler.HTTPAbstractImpl
configureSampleLabel, errorResult, getArguments, getAuthManager, getAutoRedirects, getCacheManager, getConnectTimeout, getContentEncoding, getCookieManager, getDoBrowserCompatibleMultipart, getHeaderManager, getHTTPFiles, getIpSource, getIpSourceAddress, getProxyHost, getProxyPass, getProxyPortInt, getProxyScheme, getProxyUser, getResponseTimeout, getSendFileAsPostBody, getSendParameterValuesAsPostBody, getUseKeepAlive, getUseMultipart, getUseMultipartForPost, hasArguments, isMonitor, isSuccessCode, notifySSLContextWasReset, readResponse, readResponse, readResponse, readResponse, resultProcessing, setUseKeepAlive, updateSampleResultForResourceInCache
-
Constructor Details
-
HTTPHC4Impl
-
-
Method Details
-
sample
protected HTTPSampleResult sample(URL url, String method, boolean areFollowingRedirect, int frameDepth) - Specified by:
sample
in classHTTPAbstractImpl
-
handleMethod
protected void handleMethod(String method, HTTPSampleResult result, org.apache.http.client.methods.HttpRequestBase httpRequest, org.apache.http.protocol.HttpContext localContext) throws IOException Setup Body of request if different from GET. Field HTTPSampleResult#queryString of result is modified in the 2 cases- Parameters:
method
- String HTTP methodresult
-HTTPSampleResult
httpRequest
-HttpRequestBase
localContext
-HttpContext
- Throws:
IOException
- when posting data fails due to I/O
-
createSampleResult
Create HTTPSampleResult filling url, method and SampleLabel. Monitor field is computed calling isMonitor()- Parameters:
url
- URLmethod
- HTTP Method- Returns:
HTTPSampleResult
-
getProxyAuthStrategy
protected org.apache.http.client.AuthenticationStrategy getProxyAuthStrategy() -
setupRequest
protected void setupRequest(URL url, org.apache.http.client.methods.HttpRequestBase httpRequest, HTTPSampleResult res) throws IOException Setup following elements on httpRequest:- ConnRoutePNames.LOCAL_ADDRESS enabling IP-SPOOFING
- Socket and connection timeout
- Redirect handling
- Keep Alive header or Connection Close
- Calls setConnectionHeaders to setup headers
- Calls setConnectionCookie to setup Cookie
- Parameters:
url
-URL
of the requesthttpRequest
- http request for the requestres
- sample result to set cookies on- Throws:
IOException
- if hostname/ip to use could not be figured out
-
setDefaultRequestHeaders
protected void setDefaultRequestHeaders(org.apache.http.HttpRequest request) Set any default request headers to include- Parameters:
request
- the HttpRequest to be used
-
setConnectionCookie
protected String setConnectionCookie(org.apache.http.HttpRequest request, URL url, CookieManager cookieManager) Extracts all the required cookies for that particular URL request and sets them in theHttpMethod
passed in.- Parameters:
request
-HttpRequest
for the requesturl
-URL
of the requestcookieManager
- theCookieManager
containing all the cookies- Returns:
- a String containing the cookie details (for the response) May be null
-
setConnectionHeaders
protected static void setConnectionHeaders(org.apache.http.client.methods.HttpRequestBase request, URL url, HeaderManager headerManager, CacheManager cacheManager) Extracts all the required non-cookie headers for that particular URL request and sets them in theHttpMethod
passed in- Parameters:
request
-HttpRequest
which represents the requesturl
-URL
of the URL requestheaderManager
- theHeaderManager
containing all the cookies for thisUrlConfig
cacheManager
- the CacheManager (may be null)
-
setupHttpEntityEnclosingRequestData
protected String setupHttpEntityEnclosingRequestData(org.apache.http.client.methods.HttpEntityEnclosingRequestBase entityEnclosingRequest) throws IOException - Parameters:
entityEnclosingRequest
-HttpEntityEnclosingRequestBase
- Returns:
- String body sent if computable
- Throws:
IOException
- if sending the data fails due to I/O
-
sendEntityData
protected String sendEntityData(org.apache.http.client.methods.HttpEntityEnclosingRequestBase entity) throws IOException Creates the entity data to be sent.If there is a file entry with a non-empty MIME type we use that to set the request Content-Type header, otherwise we default to whatever header is present from a Header Manager.
If the content charset
HTTPAbstractImpl.getContentEncoding()
is null or empty we use the HC4 default provided byHTTP.DEF_CONTENT_CHARSET
which is ISO-8859-1.- Parameters:
entity
- to be processed, e.g. PUT or PATCH- Returns:
- the entity content, may be empty
- Throws:
UnsupportedEncodingException
- for invalid charset nameIOException
- cannot really occur for ByteArrayOutputStream methods
-
notifyFirstSampleAfterLoopRestart
protected void notifyFirstSampleAfterLoopRestart()- Overrides:
notifyFirstSampleAfterLoopRestart
in classHTTPAbstractImpl
-
threadFinished
protected void threadFinished()- Overrides:
threadFinished
in classHTTPAbstractImpl
-
interrupt
public boolean interrupt()Description copied from interface:Interruptible
Interrupt the current operation if possible.- Returns:
true
if there was an operation to interrupt.
-