Class HTTPHC4Impl

All Implemented Interfaces:
HTTPConstantsInterface, Interruptible

public class HTTPHC4Impl extends HTTPHCAbstractImpl
HTTP Sampler using Apache HttpClient 4.x.
  • Constructor Details

  • Method Details

    • 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
      Setup Body of request if different from GET. Field HTTPSampleResult#queryString of result is modified in the 2 cases
      Parameters:
      method - String HTTP method
      result - 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 - URL
      method - 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 request
      httpRequest - http request for the request
      res - 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 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 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 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)
    • 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 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
    • 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.