Apache JMeter

org.apache.jmeter.protocol.http.sampler
Class HTTPHC4Impl

java.lang.Object
  extended by org.apache.jmeter.protocol.http.sampler.HTTPAbstractImpl
      extended by org.apache.jmeter.protocol.http.sampler.HTTPHCAbstractImpl
          extended by 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
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, 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, MULTIPART_FORM_DATA, OPTIONS, PATCH, POST, PROTOCOL_HTTP, PROTOCOL_HTTPS, PUT, TRACE, TRANSFER_ENCODING
 
Constructor Summary
protected HTTPHC4Impl(HTTPSamplerBase testElement)
           
 
Method Summary
protected  HTTPSampleResult createSampleResult(URL url, String method)
          Create HTTPSampleResult filling url, method and SampleLabel.
protected  String getCharsetWithDefault(org.apache.http.params.HttpParams putParams)
          If contentEncoding is not set by user, then Platform encoding will be used to convert to String
protected  void handleMethod(String method, HTTPSampleResult result, org.apache.http.client.methods.HttpRequestBase httpRequest, org.apache.http.protocol.HttpContext localContext)
          Calls sendPostData if method is POST and sendEntityData if method is PUT or PATCH Field HTTPSampleResult#queryString of result is modified in the 2 cases
 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(org.apache.http.client.methods.HttpEntityEnclosingRequestBase entity)
          Creates the entity data to be sent.
protected  String sendPostData(org.apache.http.client.methods.HttpPost post)
           
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 the HttpMethod passed in.
protected  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 the HttpMethod passed in
protected  void setDefaultRequestHeaders(org.apache.http.HttpRequest request)
          Set any default request headers to include
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 Cookie
protected  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
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

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 class HTTPAbstractImpl

handleMethod

protected void handleMethod(String method,
                            HTTPSampleResult result,
                            org.apache.http.client.methods.HttpRequestBase httpRequest,
                            org.apache.http.protocol.HttpContext localContext)
                     throws IOException
Calls sendPostData if method is POST and sendEntityData if method is PUT or PATCH Field HTTPSampleResult#queryString of result is modified in the 2 cases

Parameters:
method - String HTTP method
result - HTTPSampleResult
httpRequest - HttpRequestBase
localContext - HttpContext
Throws:
IOException

createSampleResult

protected HTTPSampleResult createSampleResult(URL url,
                                              String method)
Create HTTPSampleResult filling url, method and SampleLabel. Monitor field is computed calling isMonitor()

Parameters:
url - URL
method - HTTP Method
Returns:
HTTPSampleResult

setupRequest

protected void setupRequest(URL url,
                            org.apache.http.client.methods.HttpRequestBase httpRequest,
                            HTTPSampleResult res)
                     throws IOException
Setup following elements on httpRequest:

Parameters:
url -
httpRequest -
res -
Throws:
IOException

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 the HttpMethod passed in.

Parameters:
request - HttpRequest for the request
url - URL of the request
cookieManager - the CookieManager containing all the cookies
Returns:
a String containing the cookie details (for the response) May be null

setConnectionHeaders

protected 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 the HttpMethod passed in

Parameters:
request - HttpRequest which represents the request
url - URL of the URL request
headerManager - the HeaderManager containing all the cookies for this UrlConfig
cacheManager - the CacheManager (may be null)

sendPostData

protected String sendPostData(org.apache.http.client.methods.HttpPost post)
                       throws IOException
Parameters:
post - HttpPost
Returns:
String posted body if computable
Throws:
IOException

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 by HTTP.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 name
IOException - cannot really occur for ByteArrayOutputStream methods

getCharsetWithDefault

protected String getCharsetWithDefault(org.apache.http.params.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 class HTTPAbstractImpl

threadFinished

protected void threadFinished()
Overrides:
threadFinished in class HTTPAbstractImpl

interrupt

public boolean interrupt()
Description copied from interface: Interruptible
Interrupt the current operation if possible.

Returns:
true if there was an operation to interrupt.

Apache JMeter

Copyright © 1998-2013 Apache Software Foundation. All Rights Reserved.