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
public class HTTPHC4Impl extends HTTPHCAbstractImpl
HTTP Sampler using Apache HttpClient 4.x.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
HTTPHC4Impl.HttpDelete
-
Field Summary
-
Fields inherited from class org.apache.jmeter.protocol.http.sampler.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 org.apache.jmeter.protocol.http.sampler.HTTPAbstractImpl
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_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
HTTPHC4Impl(HTTPSamplerBase testElement)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected HTTPSampleResult
createSampleResult(URL url, String method)
Create HTTPSampleResult filling url, method and SampleLabel.protected String
getCharsetWithDefault(HttpParams putParams)
If contentEncoding is not set by user, then Platform encoding will be used to convert to Stringprotected void
handleMethod(String method, HTTPSampleResult result, HttpRequestBase httpRequest, HttpContext localContext)
Calls#sendPostData(HttpPost)
if method isPOST
and#sendEntityData(HttpEntityEnclosingRequestBase)
if method isPUT
orPATCH
boolean
interrupt()
Interrupt the current operation if possible.protected void
notifyFirstSampleAfterLoopRestart()
protected HTTPSampleResult
sample(URL url, String method, boolean areFollowingRedirect, int frameDepth)
protected String
sendEntityData(HttpEntityEnclosingRequestBase entity)
Creates the entity data to be sent.protected String
sendPostData(HttpPost post)
protected String
setConnectionCookie(HttpRequest request, URL url, CookieManager cookieManager)
Extracts all the required cookies for that particular URL request and sets them in theHttpMethod
passed in.protected void
setConnectionHeaders(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(HttpRequest request)
Set any default request headers to includeprotected void
setupRequest(URL url, 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
threadFinished()
-
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
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
-
-
-
-
Constructor Detail
-
HTTPHC4Impl
protected HTTPHC4Impl(HTTPSamplerBase testElement)
-
-
Method Detail
-
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, HttpRequestBase httpRequest, HttpContext localContext) throws IOException
Calls#sendPostData(HttpPost)
if method isPOST
and#sendEntityData(HttpEntityEnclosingRequestBase)
if method isPUT
orPATCH
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
protected HTTPSampleResult createSampleResult(URL url, String method)
Create HTTPSampleResult filling url, method and SampleLabel. Monitor field is computed calling isMonitor()- Parameters:
url
- URLmethod
- HTTP Method- Returns:
HTTPSampleResult
-
setupRequest
protected void setupRequest(URL url, 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(HttpRequest request)
Set any default request headers to include- Parameters:
request
- the HttpRequest to be used
-
setConnectionCookie
protected String setConnectionCookie(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 void setConnectionHeaders(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)
-
sendPostData
protected String sendPostData(HttpPost post) throws IOException
- Parameters:
post
-HttpPost
- Returns:
- String posted body if computable
- Throws:
IOException
- if sending the data fails due to I/O
-
sendEntityData
protected String sendEntityData(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
-
getCharsetWithDefault
protected String getCharsetWithDefault(HttpParams putParams)
If contentEncoding is not set by user, then Platform encoding will be used to convert to String- Parameters:
putParams
-HttpParams
- Returns:
- String charset
-
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.
-
-