Package groovyx.net.http
Class HttpURLClient
java.lang.Object
groovyx.net.http.HttpURLClient
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
- Since:
- 0.5.0
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate final class
This class makes a HttpURLConnection look like an HttpResponse for use byParserRegistry
andHttpResponseDecorator
.private static class
This class basically wraps Signpost classes so they are not loaded untilsetOAuth(Object, Object, Object, Object)
is called. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate Object
private URIBuilder
private EncoderRegistry
private boolean
protected org.apache.commons.logging.Log
Logger instance defined for use by sub-classesprotected HttpURLClient.OAuthWrapper
private ParserRegistry
private Object
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate String
getBasicAuthHeader
(String user, String pass) Get the default content-type used for parsing response data.Get the encoder registry used by this instance, which can be used to directly modify the request serialization behavior.Retrieve the default headers that will be sent in each request.private Object
getparsedResult
(String method, Object contentType, org.apache.http.HttpResponse response) Retrieve the parser registry used by this instance, which can be used to directly modify the parsing behavior.Get the default content-type used to serialize the request data.getUrl()
The default URL for this request.boolean
Perform a request.void
setBasicAuth
(Object user, Object pass) Set basic user and password authorization to be used for every request.void
setContentType
(Object ct) Set the default content-type used to control response parsing and request serialization behavior.void
setEncoders
(EncoderRegistry encoderRegistry) void
setFollowRedirects
(boolean follow) Control whether this instance should automatically follow redirect responses.void
setHeaders
(Map<?, ?> headers) Set default headers to be sent with every request.void
Sign all outbound requests with the given OAuth keys and tokens.void
setParsers
(ParserRegistry parserRegistry) void
setRequestContentType
(Object requestContentType) Set the default content-type used to control request body serialization.void
Set the default request URL.
-
Field Details
-
defaultHeaders
-
encoderRegistry
-
parserRegistry
-
contentType
-
requestContentType
-
defaultURL
-
followRedirects
private boolean followRedirects -
oauth
-
log
protected org.apache.commons.logging.Log logLogger instance defined for use by sub-classes
-
-
Constructor Details
-
HttpURLClient
public HttpURLClient()
-
-
Method Details
-
request
public HttpResponseDecorator request(Map<String, ?> args) throws URISyntaxException, MalformedURLException, IOExceptionPerform 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 thecontentType
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
- Throws:
UnsupportedEncodingException
-
setBasicAuth
Set basic user and password authorization to be used for every request. Passnull
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. SeeHttpURLConnection.setInstanceFollowRedirects(boolean)
- Parameters:
follow
- true if the connection should automatically follow redirect responses from the server.
-
isFollowRedirects
public boolean isFollowRedirects()- Returns:
-
getUrl
The default URL for this request. This is aURIBuilder
which can be used to easily manipulate portions of the request URL.- Returns:
-
setUrl
Set the default request URL.- Parameters:
url
- any object whosetoString()
produces a valid URI.- Throws:
URISyntaxException
- See Also:
-
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
Set default headers to be sent with every request.- Parameters:
headers
-
-
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
-
getParsers
Retrieve the parser registry used by this instance, which can be used to directly modify the parsing behavior.- Returns:
-
setParsers
-
getContentType
Get the default content-type used for parsing response data.- Returns:
- a String or
ContentType
object. Defaults toContentType.ANY
-
setContentType
Set the default content-type used to control response parsing and request serialization behavior. Ifnull
is passed,ContentType.ANY
will be used. If this value isContentType.ANY
, the responseContent-Type
header is used to parse the response.- Parameters:
ct
- a String orContentType
value.
-
getRequestContentType
Get the default content-type used to serialize the request data.- Returns:
-
setRequestContentType
Set the default content-type used to control request body serialization. If null, thecontentType property
is used. Additionally, if thecontentType
isContentType.ANY
, arequestContentType
must be specified when performing a POST or PUT request that sends request data.- Parameters:
requestContentType
- String orContentType
value.
-