Class HttpURLClient

java.lang.Object
groovyx.net.http.HttpURLClient

public class HttpURLClient extends Object

This class provides a simplified API similar to HTTPBuilder, but uses HttpURLConnection for I/O so that it is compatible with Google App Engine. Features:

  • Parser and Encoder support
  • Easy request and response header manipulation
  • Basic authentication
Notably absent are status-code based response handling and the more complex authentication mechanisms.

TODO request encoding support (if anyone asks for it)
Since:
0.5.0
See Also:
  • Field Details

    • defaultHeaders

      private Map<String,String> defaultHeaders
    • encoderRegistry

      private EncoderRegistry encoderRegistry
    • parserRegistry

      private ParserRegistry parserRegistry
    • contentType

      private Object contentType
    • requestContentType

      private Object requestContentType
    • defaultURL

      private URIBuilder defaultURL
    • followRedirects

      private boolean followRedirects
    • oauth

      protected HttpURLClient.OAuthWrapper oauth
    • log

      protected org.apache.commons.logging.Log log
      Logger instance defined for use by sub-classes
  • Constructor Details

    • HttpURLClient

      public HttpURLClient()
  • Method Details

    • request

      Perform a request. Parameters are:
      url
      the entire request URL
      path
      the path portion of the request URL, if a default URL is set on this instance.
      query
      URL query parameters for this request.
      timeout
      see URLConnection.setReadTimeout(int)
      method
      This defaults to GET, or POST if a body parameter is also specified.
      contentType
      Explicitly specify how to parse the response. If this value is ContentType.ANY, the response Content-Type header is used to determine how to parse the response.
      requestContentType
      used in a PUT or POST request to transform the request body and set the proper Content-Type header. This defaults to the contentType if unset.
      auth
      Basic authorization; pass the value as a list in the form [user, pass]
      headers
      additional request headers, as a map
      body
      request content body, for a PUT or POST request. This will be encoded using the requestContentType
      Parameters:
      args - named parameters
      Returns:
      the parsed response
      Throws:
      URISyntaxException
      MalformedURLException
      IOException
    • getparsedResult

      private Object getparsedResult(String method, Object contentType, org.apache.http.HttpResponse response) throws ResponseParseException
      Throws:
      ResponseParseException
    • getBasicAuthHeader

      private String getBasicAuthHeader(String user, String pass) throws UnsupportedEncodingException
      Throws:
      UnsupportedEncodingException
    • setBasicAuth

      public void setBasicAuth(Object user, Object pass) throws UnsupportedEncodingException
      Set basic user and password authorization to be used for every request. Pass null to un-set authorization for this instance.
      Parameters:
      user -
      pass -
      Throws:
      UnsupportedEncodingException
    • setOAuth

      public void setOAuth(Object consumerKey, Object consumerSecret, Object accessToken, Object accessSecret)
      Sign all outbound requests with the given OAuth keys and tokens. It is assumed you have already generated a consumer keypair and retrieved a proper access token pair from your target service (see Signpost documentation for more details.) Once this has been done all requests will be signed.
      Parameters:
      consumerKey - null if you want to _stop_ signing requests.
      consumerSecret -
      accessToken -
      accessSecret -
    • setFollowRedirects

      public void setFollowRedirects(boolean follow)
      Control whether this instance should automatically follow redirect responses. See HttpURLConnection.setInstanceFollowRedirects(boolean)
      Parameters:
      follow - true if the connection should automatically follow redirect responses from the server.
    • isFollowRedirects

      public boolean isFollowRedirects()
      Returns:
    • getUrl

      public Object getUrl()
      The default URL for this request. This is a URIBuilder which can be used to easily manipulate portions of the request URL.
      Returns:
    • setUrl

      public void setUrl(Object url) throws URISyntaxException
      Set the default request URL.
      Parameters:
      url - any object whose toString() produces a valid URI.
      Throws:
      URISyntaxException
      See Also:
    • getHeaders

      public Map<String,String> getHeaders()
      Retrieve the default headers that will be sent in each request. Note that this is a 'live' map that can be directly manipulated to add or remove the default request headers.
      Returns:
    • setHeaders

      public void setHeaders(Map<?,?> headers)
      Set default headers to be sent with every request.
      Parameters:
      headers -
    • getEncoders

      public EncoderRegistry getEncoders()
      Get the encoder registry used by this instance, which can be used to directly modify the request serialization behavior. i.e. client.encoders.'application/xml' = {....}.
      Returns:
    • setEncoders

      public void setEncoders(EncoderRegistry encoderRegistry)
    • getParsers

      public ParserRegistry getParsers()
      Retrieve the parser registry used by this instance, which can be used to directly modify the parsing behavior.
      Returns:
    • setParsers

      public void setParsers(ParserRegistry parserRegistry)
    • getContentType

      public Object getContentType()
      Get the default content-type used for parsing response data.
      Returns:
      a String or ContentType object. Defaults to ContentType.ANY
    • setContentType

      public void setContentType(Object ct)
      Set the default content-type used to control response parsing and request serialization behavior. If null is passed, ContentType.ANY will be used. If this value is ContentType.ANY, the response Content-Type header is used to parse the response.
      Parameters:
      ct - a String or ContentType value.
    • getRequestContentType

      public Object getRequestContentType()
      Get the default content-type used to serialize the request data.
      Returns:
    • setRequestContentType

      public void setRequestContentType(Object requestContentType)
      Set the default content-type used to control request body serialization. If null, the contentType property is used. Additionally, if the contentType is ContentType.ANY, a requestContentType must be specified when performing a POST or PUT request that sends request data.
      Parameters:
      requestContentType - String or ContentType value.