@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:
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.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 |
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) |
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 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()