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 classThis class makes a HttpURLConnection look like an HttpResponse for use byParserRegistryandHttpResponseDecorator.private static classThis class basically wraps Signpost classes so they are not loaded untilsetOAuth(Object, Object, Object, Object)is called. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate Objectprivate URIBuilderprivate EncoderRegistryprivate booleanprotected org.apache.commons.logging.LogLogger instance defined for use by sub-classesprotected HttpURLClient.OAuthWrapperprivate ParserRegistryprivate Object -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate StringgetBasicAuthHeader(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 ObjectgetparsedResult(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.booleanPerform a request.voidsetBasicAuth(Object user, Object pass) Set basic user and password authorization to be used for every request.voidsetContentType(Object ct) Set the default content-type used to control response parsing and request serialization behavior.voidsetEncoders(EncoderRegistry encoderRegistry) voidsetFollowRedirects(boolean follow) Control whether this instance should automatically follow redirect responses.voidsetHeaders(Map<?, ?> headers) Set default headers to be sent with every request.voidSign all outbound requests with the given OAuth keys and tokens.voidsetParsers(ParserRegistry parserRegistry) voidsetRequestContentType(Object requestContentType) Set the default content-type used to control request body serialization.voidSet 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
bodyparameter is also specified. - contentType
- Explicitly specify how to parse the response.
If this value is ContentType.ANY, the response
Content-Typeheader 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-Typeheader. This defaults to thecontentTypeif 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:
URISyntaxExceptionMalformedURLExceptionIOException
-
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. Passnullto 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
-
getUrl
The default URL for this request. This is aURIBuilderwhich 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
-
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
ContentTypeobject. Defaults toContentType.ANY
-
setContentType
Set the default content-type used to control response parsing and request serialization behavior. Ifnullis passed,ContentType.ANYwill be used. If this value isContentType.ANY, the responseContent-Typeheader is used to parse the response.- Parameters:
ct- a String orContentTypevalue.
-
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 propertyis used. Additionally, if thecontentTypeisContentType.ANY, arequestContentTypemust be specified when performing a POST or PUT request that sends request data.- Parameters:
requestContentType- String orContentTypevalue.
-