@groovy.transform.Trait @groovy.transform.CompileStatic trait HttpClientSupport extends java.lang.Object
Test-focused synchronous HTTP client for exercising live endpoints in integration and functional tests.
This type wraps java.net.http.HttpClient and returns TestHttpResponse for fluent assertions. It is intentionally convenience-oriented, with overloads for common payload formats (JSON, XML, multipart) and optional explicit client usage when tests need custom redirect, timeout, or SSL behavior.
Default behavior:
grails.http.client.timeout system property (value in seconds).ALWAYS for the shared singleton client.
Relative URLs are resolved against getHttpBaseUrl. Absolute http:// and https:// URLs are
used as-is.
Typical usage in a Grails integration test:
import spock.lang.Specification import grails.testing.mixin.integration.Integration import org.apache.grails.testing.http.client.HttpClientSupport
Implementing tests must provide local.server.port (in Grails typically via @Integration),
or otherwise override getHttpBaseUrl.
| Type | Name and description |
|---|---|
java.lang.String |
httpContextPath |
int |
httpLocalServerPort |
| Type Params | Return Type | Name and description |
|---|---|---|
|
java.time.Duration |
getDefaultRequestTimeout()The request timeout applied to requests built via this helper. |
|
java.lang.String |
getHttpBaseUrl()Base URL used when resolving relative request paths. |
|
java.net.http.HttpClient |
getHttpClient()
|
|
TestHttpResponse |
http(java.lang.CharSequence pathOrUrl)GET request. |
|
TestHttpResponse |
http(java.lang.CharSequence pathOrUrl, java.net.http.HttpClient client)GET request. |
|
TestHttpResponse |
http(java.util.Map<java.lang.String, java.lang.String> headers, java.lang.CharSequence pathOrUrl)GET request. |
|
TestHttpResponse |
http(java.util.Map<java.lang.String, java.lang.String> headers, java.lang.CharSequence pathOrUrl, java.net.http.HttpClient client)GET request. |
|
TestHttpResponse |
httpDelete(java.lang.CharSequence pathOrUrl)DELETE request. |
|
TestHttpResponse |
httpDelete(java.lang.CharSequence pathOrUrl, java.net.http.HttpClient client)DELETE request. |
|
TestHttpResponse |
httpDelete(java.util.Map<java.lang.String, java.lang.String> headers, java.lang.CharSequence pathOrUrl)DELETE request. |
|
TestHttpResponse |
httpDelete(java.util.Map<java.lang.String, java.lang.String> headers, java.lang.CharSequence pathOrUrl, java.net.http.HttpClient client)DELETE request. |
|
TestHttpResponse |
httpHead(java.lang.CharSequence pathOrUrl)HEAD request. |
|
TestHttpResponse |
httpHead(java.lang.CharSequence pathOrUrl, java.net.http.HttpClient client)HEAD request. |
|
TestHttpResponse |
httpHead(java.util.Map<java.lang.String, java.lang.String> headers, java.lang.CharSequence pathOrUrl)HEAD request. |
|
TestHttpResponse |
httpHead(java.util.Map<java.lang.String, java.lang.String> headers, java.lang.CharSequence pathOrUrl, java.net.http.HttpClient client)HEAD request. |
|
TestHttpResponse |
httpOptions(java.lang.CharSequence pathOrUrl)OPTIONS request. |
|
TestHttpResponse |
httpOptions(java.lang.CharSequence pathOrUrl, java.net.http.HttpClient client)OPTIONS request. |
|
TestHttpResponse |
httpOptions(java.util.Map<java.lang.String, java.lang.String> headers, java.lang.CharSequence pathOrUrl)OPTIONS request. |
|
TestHttpResponse |
httpOptions(java.util.Map<java.lang.String, java.lang.String> headers, java.lang.CharSequence pathOrUrl, java.net.http.HttpClient client)OPTIONS request. |
|
TestHttpResponse |
httpPatch(java.util.Map<java.lang.String, java.lang.String> headers, java.lang.CharSequence pathOrUrl, java.lang.CharSequence body, java.lang.CharSequence contentType, java.net.http.HttpClient client)PATCH request. |
|
TestHttpResponse |
httpPatchJson(java.util.Map<java.lang.String, java.lang.String> headers, java.lang.CharSequence pathOrUrl, java.lang.CharSequence body, java.net.http.HttpClient client)PATCH JSON string payload. |
|
TestHttpResponse |
httpPatchJson(java.lang.CharSequence pathOrUrl, JsonGenerator jsonGenerator, java.util.Map<java.lang.String, java.lang.Object> body)PATCH JSON payload from java.util.Map. |
|
TestHttpResponse |
httpPatchJson(java.lang.CharSequence pathOrUrl, JsonGenerator jsonGenerator, java.util.Map<java.lang.String, java.lang.Object> body, java.net.http.HttpClient client)PATCH JSON payload from java.util.Map. |
|
TestHttpResponse |
httpPatchJson(java.util.Map<java.lang.String, java.lang.String> headers, java.lang.CharSequence pathOrUrl, JsonGenerator jsonGenerator, java.util.Map<java.lang.String, java.lang.Object> body)PATCH JSON payload from java.util.Map. |
|
TestHttpResponse |
httpPatchJson(java.util.Map<java.lang.String, java.lang.String> headers, java.lang.CharSequence pathOrUrl, JsonGenerator jsonGenerator, java.util.Map<java.lang.String, java.lang.Object> body, java.net.http.HttpClient client)PATCH JSON payload from java.util.Map. |
|
TestHttpResponse |
httpPatchXml(java.lang.CharSequence pathOrUrl, Format format, groovy.lang.Closure<?> body)PATCH XML generated by the provided groovy.xml.MarkupBuilder DSL closure. |
|
TestHttpResponse |
httpPatchXml(java.lang.CharSequence pathOrUrl, Format format, groovy.lang.Closure<?> body, java.net.http.HttpClient client)PATCH XML generated by the provided groovy.xml.MarkupBuilder DSL closure. |
|
TestHttpResponse |
httpPatchXml(java.util.Map<java.lang.String, java.lang.String> headers, java.lang.CharSequence pathOrUrl, Format format, groovy.lang.Closure<?> body)PATCH XML generated by the provided groovy.xml.MarkupBuilder DSL closure. |
|
TestHttpResponse |
httpPatchXml(java.util.Map<java.lang.String, java.lang.String> headers, java.lang.CharSequence pathOrUrl, Format format, groovy.lang.Closure<?> body, java.net.http.HttpClient client)PATCH XML generated by the provided groovy.xml.MarkupBuilder DSL closure. |
|
TestHttpResponse |
httpPost(java.util.Map<java.lang.String, java.lang.String> headers, java.lang.CharSequence pathOrUrl, java.lang.CharSequence body, java.lang.CharSequence contentType, java.net.http.HttpClient client)POST request. |
|
TestHttpResponse |
httpPostForm(java.util.Map<java.lang.String, java.lang.String> headers, java.lang.CharSequence pathOrUrl, java.util.Map<java.lang.String, ?> formData, java.net.http.HttpClient client)POST form data as application/x-www-form-urlencoded (UTF-8). |
|
TestHttpResponse |
httpPostJson(java.util.Map<java.lang.String, java.lang.String> headers, java.lang.CharSequence pathOrUrl, java.lang.CharSequence body, java.net.http.HttpClient client)POST JSON string payload. |
|
TestHttpResponse |
httpPostJson(java.lang.CharSequence pathOrUrl, JsonGenerator jsonGenerator, java.util.Map<java.lang.String, java.lang.Object> body)POST JSON payload from java.util.Map. |
|
TestHttpResponse |
httpPostJson(java.lang.CharSequence pathOrUrl, JsonGenerator jsonGenerator, java.util.Map<java.lang.String, java.lang.Object> body, java.net.http.HttpClient client)POST JSON payload from java.util.Map. |
|
TestHttpResponse |
httpPostJson(java.util.Map<java.lang.String, java.lang.String> headers, java.lang.CharSequence pathOrUrl, JsonGenerator jsonGenerator, java.util.Map<java.lang.String, java.lang.Object> body)POST JSON payload from java.util.Map. |
|
TestHttpResponse |
httpPostJson(java.util.Map<java.lang.String, java.lang.String> headers, java.lang.CharSequence pathOrUrl, JsonGenerator jsonGenerator, java.util.Map<java.lang.String, java.lang.Object> body, java.net.http.HttpClient client)POST JSON payload from java.util.Map. |
|
TestHttpResponse |
httpPostMultipart(java.lang.CharSequence pathOrUrl, MultipartBody body, java.net.http.HttpClient client)POST multipart payload. |
|
TestHttpResponse |
httpPostMultipart(java.util.Map<java.lang.String, java.lang.String> headers, java.lang.CharSequence pathOrUrl, MultipartBody body, java.net.http.HttpClient client)POST multipart payload. |
|
TestHttpResponse |
httpPostXml(java.util.Map<java.lang.String, java.lang.String> headers, java.lang.CharSequence pathOrUrl, java.lang.CharSequence body, java.net.http.HttpClient client)POST XML string payload. |
|
TestHttpResponse |
httpPostXml(java.lang.CharSequence pathOrUrl, Format format, groovy.lang.Closure<?> body)POST XML generated by the provided groovy.xml.MarkupBuilder DSL closure. |
|
TestHttpResponse |
httpPostXml(java.lang.CharSequence pathOrUrl, Format format, groovy.lang.Closure<?> body, java.net.http.HttpClient client)POST XML generated by the provided groovy.xml.MarkupBuilder DSL closure. |
|
TestHttpResponse |
httpPostXml(java.util.Map<java.lang.String, java.lang.String> headers, java.lang.CharSequence pathOrUrl, Format format, groovy.lang.Closure<?> body)POST XML generated by the provided groovy.xml.MarkupBuilder DSL closure. |
|
TestHttpResponse |
httpPostXml(java.util.Map<java.lang.String, java.lang.String> headers, java.lang.CharSequence pathOrUrl, Format format, groovy.lang.Closure<?> body, java.net.http.HttpClient client)POST XML generated by the provided groovy.xml.MarkupBuilder DSL closure. |
|
TestHttpResponse |
httpPut(java.util.Map<java.lang.String, java.lang.String> headers, java.lang.CharSequence pathOrUrl, java.lang.CharSequence body, java.lang.CharSequence contentType, java.net.http.HttpClient client)PUT request. |
|
TestHttpResponse |
httpPutJson(java.util.Map<java.lang.String, java.lang.String> headers, java.lang.CharSequence pathOrUrl, java.lang.CharSequence body, java.net.http.HttpClient client)PUT JSON string payload. |
|
TestHttpResponse |
httpPutJson(java.lang.CharSequence pathOrUrl, JsonGenerator jsonGenerator, java.util.Map<java.lang.String, java.lang.Object> body)PUT JSON payload from java.util.Map. |
|
TestHttpResponse |
httpPutJson(java.lang.CharSequence pathOrUrl, JsonGenerator jsonGenerator, java.util.Map<java.lang.String, java.lang.Object> body, java.net.http.HttpClient client)PUT JSON payload from java.util.Map. |
|
TestHttpResponse |
httpPutJson(java.util.Map<java.lang.String, java.lang.String> headers, java.lang.CharSequence pathOrUrl, JsonGenerator jsonGenerator, java.util.Map<java.lang.String, java.lang.Object> body)PUT JSON payload from java.util.Map. |
|
TestHttpResponse |
httpPutJson(java.util.Map<java.lang.String, java.lang.String> headers, java.lang.CharSequence pathOrUrl, JsonGenerator jsonGenerator, java.util.Map<java.lang.String, java.lang.Object> body, java.net.http.HttpClient client)PUT JSON payload from java.util.Map. |
|
TestHttpResponse |
httpPutXml(java.lang.CharSequence pathOrUrl, Format format, groovy.lang.Closure<?> body)PUT XML generated by the provided groovy.xml.MarkupBuilder DSL closure. |
|
TestHttpResponse |
httpPutXml(java.lang.CharSequence pathOrUrl, Format format, groovy.lang.Closure<?> body, java.net.http.HttpClient client)PUT XML generated by the provided groovy.xml.MarkupBuilder DSL closure. |
|
TestHttpResponse |
httpPutXml(java.util.Map<java.lang.String, java.lang.String> headers, java.lang.CharSequence pathOrUrl, Format format, groovy.lang.Closure<?> body)PUT XML generated by the provided groovy.xml.MarkupBuilder DSL closure. |
|
TestHttpResponse |
httpPutXml(java.util.Map<java.lang.String, java.lang.String> headers, java.lang.CharSequence pathOrUrl, Format format, groovy.lang.Closure<?> body, java.net.http.HttpClient client)PUT XML generated by the provided groovy.xml.MarkupBuilder DSL closure. |
|
TestHttpResponse |
httpTrace(java.lang.CharSequence pathOrUrl)TRACE request. |
|
TestHttpResponse |
httpTrace(java.lang.CharSequence pathOrUrl, java.net.http.HttpClient client)TRACE request. |
|
TestHttpResponse |
httpTrace(java.util.Map<java.lang.String, java.lang.String> headers, java.lang.CharSequence pathOrUrl)TRACE request. |
|
TestHttpResponse |
httpTrace(java.util.Map<java.lang.String, java.lang.String> headers, java.lang.CharSequence pathOrUrl, java.net.http.HttpClient client)TRACE request. |
|
java.net.http.HttpClient |
newHttpClientWith(groovy.lang.Closure<?> configurer)Creates an java.net.http.HttpClient with default configuration and optional customizations. |
|
java.net.http.HttpRequest |
newHttpRequestWith(java.lang.CharSequence pathOrUrl, groovy.lang.Closure<?> configurer)Creates an java.net.http.HttpRequest with default configuration and optional customizations. |
|
TestHttpResponse |
sendHttpRequest(java.net.http.HttpRequest request, java.net.http.HttpClient client)Sends a pre-built request. |
| Methods inherited from class | Name |
|---|---|
class java.lang.Object |
java.lang.Object#equals(java.lang.Object), java.lang.Object#getClass(), java.lang.Object#hashCode(), java.lang.Object#notify(), java.lang.Object#notifyAll(), java.lang.Object#toString(), java.lang.Object#wait(), java.lang.Object#wait(long), java.lang.Object#wait(long, int) |
The request timeout applied to requests built via this helper.
Defaults to 60 seconds and can be overridden per test run via the
grails.http.client.timeout system property (value in seconds),
for example systemProperty('grails.http.client.timeout', '120') in the test config.
Base URL used when resolving relative request paths.
http://localhost:8080
GET request.
pathOrUrl - relative path or absolute URLGET request.
pathOrUrl - relative path or absolute URLclient - optional java.net.http.HttpClient; falls back to default clientGET request.
headers - optional request headerspathOrUrl - relative path or absolute URLGET request.
headers - optional request headerspathOrUrl - relative path or absolute URLclient - optional java.net.http.HttpClient; falls back to default clientDELETE request.
pathOrUrl - relative path or absolute URLDELETE request.
pathOrUrl - relative path or absolute URLclient - java.net.http.HttpClient instance to useDELETE request.
headers - optional request headerspathOrUrl - relative path or absolute URLDELETE request.
headers - optional request headerspathOrUrl - relative path or absolute URLclient - java.net.http.HttpClient instance to useHEAD request.
pathOrUrl - relative path or absolute URLHEAD request.
pathOrUrl - relative path or absolute URLclient - java.net.http.HttpClient instance to useHEAD request.
headers - optional request headerspathOrUrl - relative path or absolute URLHEAD request.
headers - optional request headerspathOrUrl - relative path or absolute URLclient - java.net.http.HttpClient instance to useOPTIONS request.
pathOrUrl - relative path or absolute URLOPTIONS request.
pathOrUrl - relative path or absolute URLclient - java.net.http.HttpClient instance to useOPTIONS request.
headers - optional request headerspathOrUrl - relative path or absolute URLOPTIONS request.
headers - optional request headerspathOrUrl - relative path or absolute URLclient - java.net.http.HttpClient instance to usePATCH request.
headers - optional request headerspathOrUrl - relative path or absolute URLbody - request payloadcontentType - request Content-Typeclient - optional java.net.http.HttpClient instance; falls back default clientPATCH JSON string payload.
headers - optional request headerspathOrUrl - relative path or absolute URLbody - request payloadclient - optional java.net.http.HttpClient instance; falls back to default clientPATCH JSON payload from java.util.Map.
pathOrUrl - relative path or absolute URLjsonGenerator - optional JsonGenerator for custom formattingbody - request payloadPATCH JSON payload from java.util.Map.
pathOrUrl - relative path or absolute URLjsonGenerator - optional JsonGenerator for custom formattingbody - request payloadclient - java.net.http.HttpClient instance to usePATCH JSON payload from java.util.Map.
headers - optional request headerspathOrUrl - relative path or absolute URLjsonGenerator - optional JsonGenerator for custom formattingbody - request payloadPATCH JSON payload from java.util.Map.
headers - optional request headerspathOrUrl - relative path or absolute URLjsonGenerator - optional JsonGenerator for custom formattingbody - request payloadclient - optional java.net.http.HttpClient instance; falls back to default clientPATCH XML generated by the provided groovy.xml.MarkupBuilder DSL closure.
pathOrUrl - relative path or absolute URLformat - optional xml format configurationbody - groovy.xml.MarkupBuilder DSL closurePATCH XML generated by the provided groovy.xml.MarkupBuilder DSL closure.
pathOrUrl - relative path or absolute URLformat - optional xml format configurationbody - groovy.xml.MarkupBuilder DSL closureclient - java.net.http.HttpClient instance to usePATCH XML generated by the provided groovy.xml.MarkupBuilder DSL closure.
headers - optional request headerspathOrUrl - relative path or absolute URLformat - optional xml format configurationbody - groovy.xml.MarkupBuilder DSL closurePATCH XML generated by the provided groovy.xml.MarkupBuilder DSL closure.
headers - optional request headerspathOrUrl - relative path or absolute URLformat - optional xml format configurationbody - groovy.xml.MarkupBuilder DSL closureclient - java.net.http.HttpClient instance to usePOST request.
headers - optional request headerspathOrUrl - relative path or absolute URLbody - request payloadcontentType - request Content-Typeclient - optional client; if null, falls back to getHttpClient() POST form data as application/x-www-form-urlencoded (UTF-8).
headers - optional request headerspathOrUrl - relative path or absolute URLformData - form fields to encode into the request body; collection and array values are encoded as
repeated keysclient - optional java.net.http.HttpClient instance to usePOST JSON string payload.
headers - optional request headerspathOrUrl - relative path or absolute URLbody - request payloadclient - optional client; if null, falls back to getHttpClient()POST JSON payload from java.util.Map.
pathOrUrl - relative path or absolute URLjsonGenerator - optional groovy.json.JsonGenerator for custom formattingbody - request payloadPOST JSON payload from java.util.Map.
pathOrUrl - relative path or absolute URLjsonGenerator - optional groovy.json.JsonGenerator for custom formattingbody - request payloadclient - java.net.http.HttpClient instance to usePOST JSON payload from java.util.Map.
headers - optional request headerspathOrUrl - relative path or absolute URLjsonGenerator - optional groovy.json.JsonGenerator for custom formattingbody - request payloadPOST JSON payload from java.util.Map.
headers - optional request headerspathOrUrl - relative path or absolute URLbody - request payloadclient - java.net.http.HttpClient instance to usePOST multipart payload.
pathOrUrl - relative path or absolute URLbody - prebuilt MultipartBody payloadclient - java.net.http.HttpClient instance to usePOST multipart payload.
headers - optional extra request headerspathOrUrl - relative path or absolute URLbody - prebuilt MultipartBody payloadclient - optional java.net.http.HttpClient instance; falls back default clientPOST XML string payload.
headers - optional request headerspathOrUrl - relative path or absolute URLbody - request payloadclient - optional java.net.http.HttpClient; falls back to default clientPOST XML generated by the provided groovy.xml.MarkupBuilder DSL closure.
pathOrUrl - relative path or absolute URLformat - optional xml format configurationbody - groovy.xml.MarkupBuilder DSL closurePOST XML generated by the provided groovy.xml.MarkupBuilder DSL closure.
pathOrUrl - relative path or absolute URLformat - optional xml format configurationbody - groovy.xml.MarkupBuilder DSL closureclient - java.net.http.HttpClient instance to usePOST XML generated by the provided groovy.xml.MarkupBuilder DSL closure.
headers - optional request headerspathOrUrl - relative path or absolute URLformat - optional xml format configurationbody - groovy.xml.MarkupBuilder DSL closurePOST XML generated by the provided groovy.xml.MarkupBuilder DSL closure.
headers - optional request headerspathOrUrl - relative path or absolute URLformat - optional xml format configurationbody - groovy.xml.MarkupBuilder DSL closureclient - java.net.http.HttpClient instance to usePUT request.
headers - optional request headerspathOrUrl - relative path or absolute URLbody - request payloadcontentType - request Content-Typeclient - optional java.net.http.HttpClient instance; falls back default clientPUT JSON string payload.
headers - optional request headerspathOrUrl - relative path or absolute URLbody - request payloadclient - optional java.net.http.HttpClient instance; falls back to default clientPUT JSON payload from java.util.Map.
pathOrUrl - relative path or absolute URLjsonGenerator - optional JsonGenerator for custom formattingbody - request payloadPUT JSON payload from java.util.Map.
pathOrUrl - relative path or absolute URLjsonGenerator - optional JsonGenerator for custom formattingbody - request payloadclient - java.net.http.HttpClient instance to usePUT JSON payload from java.util.Map.
headers - optional request headerspathOrUrl - relative path or absolute URLjsonGenerator - optional JsonGenerator for custom formattingbody - request payloadPUT JSON payload from java.util.Map.
headers - optional request headerspathOrUrl - relative path or absolute URLjsonGenerator - optional JsonGenerator for custom formattingbody - request payloadclient - optional java.net.http.HttpClient instance; falls back to default clientPUT XML generated by the provided groovy.xml.MarkupBuilder DSL closure.
pathOrUrl - relative path or absolute URLformat - optional xml format configurationbody - groovy.xml.MarkupBuilder DSL closurePUT XML generated by the provided groovy.xml.MarkupBuilder DSL closure.
pathOrUrl - relative path or absolute URLformat - optional xml format configurationbody - groovy.xml.MarkupBuilder DSL closureclient - java.net.http.HttpClient instance to usePUT XML generated by the provided groovy.xml.MarkupBuilder DSL closure.
headers - optional request headerspathOrUrl - relative path or absolute URLformat - optional xml format configurationbody - groovy.xml.MarkupBuilder DSL closurePUT XML generated by the provided groovy.xml.MarkupBuilder DSL closure.
headers - optional request headerspathOrUrl - relative path or absolute URLformat - optional xml format configurationbody - groovy.xml.MarkupBuilder DSL closureclient - java.net.http.HttpClient instance to useTRACE request.
pathOrUrl - relative path or absolute URLTRACE request.
pathOrUrl - relative path or absolute URLclient - java.net.http.HttpClient instance to useTRACE request.
headers - optional request headerspathOrUrl - relative path or absolute URLTRACE request.
headers - optional request headerspathOrUrl - relative path or absolute URLclient - java.net.http.HttpClient instance to useCreates an java.net.http.HttpClient with default configuration and optional customizations.
configurer - optional http builder configurer closureCreates an java.net.http.HttpRequest with default configuration and optional customizations.
Requests built through this helper always start with a timeout of 60 seconds and can be
overridden in configurer.
pathOrUrl - relative path or absolute URLconfigurer - optional request builder configurer closureSends a pre-built request.
request - request to sendclient - optional explicit client; falls back to getHttpClient()