Package io.micronaut.http.client.netty
Class DefaultHttpClient
- java.lang.Object
-
- io.micronaut.http.client.netty.DefaultHttpClient
-
- All Implemented Interfaces:
io.micronaut.context.LifeCycle<io.micronaut.http.client.HttpClient>,io.micronaut.http.client.HttpClient,io.micronaut.http.client.ProxyHttpClient,io.micronaut.http.client.sse.SseClient,io.micronaut.http.client.StreamingHttpClient,io.micronaut.websocket.WebSocketClient,java.io.Closeable,java.lang.AutoCloseable
@Internal public class DefaultHttpClient extends java.lang.Object implements io.micronaut.websocket.WebSocketClient, io.micronaut.http.client.HttpClient, io.micronaut.http.client.StreamingHttpClient, io.micronaut.http.client.sse.SseClient, io.micronaut.http.client.ProxyHttpClient, java.io.Closeable, java.lang.AutoCloseableDefault implementation of theHttpClientinterface based on Netty.- Since:
- 1.0
-
-
Field Summary
Fields Modifier and Type Field Description protected io.micronaut.core.io.buffer.ByteBufferFactory<io.netty.buffer.ByteBufAllocator,io.netty.buffer.ByteBuf>byteBufferFactoryprotected io.micronaut.http.codec.MediaTypeCodecRegistrymediaTypeCodecRegistry
-
Constructor Summary
Constructors Constructor Description DefaultHttpClient()DefaultHttpClient(io.micronaut.http.client.LoadBalancer loadBalancer, io.micronaut.http.client.HttpClientConfiguration configuration, java.lang.String contextPath, java.util.concurrent.ThreadFactory threadFactory, NettyClientSslBuilder nettyClientSslBuilder, io.micronaut.http.codec.MediaTypeCodecRegistry codecRegistry, io.micronaut.core.annotation.AnnotationMetadataResolver annotationMetadataResolver, java.util.List<io.micronaut.scheduling.instrument.InvocationInstrumenterFactory> invocationInstrumenterFactories, io.micronaut.http.filter.HttpClientFilter... filters)Construct a client for the given arguments.DefaultHttpClient(io.micronaut.http.client.LoadBalancer loadBalancer, io.micronaut.http.client.HttpClientConfiguration configuration, java.util.List<io.micronaut.scheduling.instrument.InvocationInstrumenterFactory> invocationInstrumenterFactories)DefaultHttpClient(io.micronaut.http.client.LoadBalancer loadBalancer, io.micronaut.http.HttpVersion explicitHttpVersion, io.micronaut.http.client.HttpClientConfiguration configuration, java.lang.String contextPath, io.micronaut.http.filter.HttpClientFilterResolver<io.micronaut.http.client.filter.ClientFilterResolutionContext> filterResolver, java.util.List<io.micronaut.http.filter.HttpFilterResolver.FilterEntry<io.micronaut.http.filter.HttpClientFilter>> clientFilterEntries, java.util.concurrent.ThreadFactory threadFactory, NettyClientSslBuilder nettyClientSslBuilder, io.micronaut.http.codec.MediaTypeCodecRegistry codecRegistry, io.micronaut.websocket.context.WebSocketBeanRegistry webSocketBeanRegistry, io.micronaut.http.bind.RequestBinderRegistry requestBinderRegistry, io.netty.channel.EventLoopGroup eventLoopGroup, io.netty.channel.ChannelFactory socketChannelFactory, java.util.Collection<io.micronaut.http.netty.channel.ChannelPipelineListener> pipelineListeners, NettyClientCustomizer clientCustomizer, java.util.List<io.micronaut.scheduling.instrument.InvocationInstrumenterFactory> invocationInstrumenterFactories, java.lang.String informationalServiceId)Construct a client for the given arguments.DefaultHttpClient(java.net.URI uri)DefaultHttpClient(java.net.URI uri, io.micronaut.http.client.HttpClientConfiguration configuration)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected io.micronaut.http.client.netty.DefaultHttpClient.NettyRequestWriterbuildNettyRequest(io.micronaut.http.MutableHttpRequest request, java.net.URI requestURI, io.micronaut.http.MediaType requestContentType, boolean permitsBody, io.micronaut.core.type.Argument<?> bodyType, java.util.function.Consumer<? super java.lang.Throwable> onError)voidclose()<T extends java.lang.AutoCloseable>
org.reactivestreams.Publisher<T>connect(java.lang.Class<T> clientEndpointType, io.micronaut.http.MutableHttpRequest<?> request)<T extends java.lang.AutoCloseable>
org.reactivestreams.Publisher<T>connect(java.lang.Class<T> clientEndpointType, java.util.Map<java.lang.String,java.lang.Object> parameters)<I> org.reactivestreams.Publisher<io.micronaut.core.io.buffer.ByteBuffer<?>>dataStream(io.micronaut.http.HttpRequest<I> request)<I> org.reactivestreams.Publisher<io.micronaut.core.io.buffer.ByteBuffer<?>>dataStream(io.micronaut.http.HttpRequest<I> request, io.micronaut.core.type.Argument<?> errorType)<I> org.reactivestreams.Publisher<io.micronaut.http.sse.Event<io.micronaut.core.io.buffer.ByteBuffer<?>>>eventStream(io.micronaut.http.HttpRequest<I> request)<I,B>
org.reactivestreams.Publisher<io.micronaut.http.sse.Event<B>>eventStream(io.micronaut.http.HttpRequest<I> request, io.micronaut.core.type.Argument<B> eventType)<I,B>
org.reactivestreams.Publisher<io.micronaut.http.sse.Event<B>>eventStream(io.micronaut.http.HttpRequest<I> request, io.micronaut.core.type.Argument<B> eventType, io.micronaut.core.type.Argument<?> errorType)<I,O,E>
org.reactivestreams.Publisher<io.micronaut.http.HttpResponse<O>>exchange(io.micronaut.http.HttpRequest<I> request, io.micronaut.core.type.Argument<O> bodyType, io.micronaut.core.type.Argument<E> errorType)<I> org.reactivestreams.Publisher<io.micronaut.http.HttpResponse<io.micronaut.core.io.buffer.ByteBuffer<?>>>exchangeStream(io.micronaut.http.HttpRequest<I> request)<I> org.reactivestreams.Publisher<io.micronaut.http.HttpResponse<io.micronaut.core.io.buffer.ByteBuffer<?>>>exchangeStream(io.micronaut.http.HttpRequest<I> request, io.micronaut.core.type.Argument<?> errorType)io.micronaut.http.client.HttpClientConfigurationgetConfiguration()protected java.lang.ObjectgetLoadBalancerDiscriminator()org.slf4j.LoggergetLog()io.micronaut.http.codec.MediaTypeCodecRegistrygetMediaTypeCodecRegistry()booleanisRunning()<I> org.reactivestreams.Publisher<java.util.Map<java.lang.String,java.lang.Object>>jsonStream(io.micronaut.http.HttpRequest<I> request)<I,O>
org.reactivestreams.Publisher<O>jsonStream(io.micronaut.http.HttpRequest<I> request, io.micronaut.core.type.Argument<O> type)<I,O>
org.reactivestreams.Publisher<O>jsonStream(io.micronaut.http.HttpRequest<I> request, io.micronaut.core.type.Argument<O> type, io.micronaut.core.type.Argument<?> errorType)<I,O>
org.reactivestreams.Publisher<O>jsonStream(io.micronaut.http.HttpRequest<I> request, java.lang.Class<O> type)protected java.net.URIprependContextPath(java.net.URI requestURI)org.reactivestreams.Publisher<io.micronaut.http.MutableHttpResponse<?>>proxy(io.micronaut.http.HttpRequest<?> request)org.reactivestreams.Publisher<io.micronaut.http.MutableHttpResponse<?>>proxy(io.micronaut.http.HttpRequest<?> request, io.micronaut.http.client.ProxyRequestOptions options)protected <I> org.reactivestreams.Publisher<java.net.URI>resolveRedirectURI(io.micronaut.http.HttpRequest<?> parentRequest, io.micronaut.http.HttpRequest<I> request)protected <I> org.reactivestreams.Publisher<java.net.URI>resolveRequestURI(io.micronaut.http.HttpRequest<I> request)protected <I> org.reactivestreams.Publisher<java.net.URI>resolveRequestURI(io.micronaut.http.HttpRequest<I> request, boolean includeContextPath)<I,O,E>
org.reactivestreams.Publisher<O>retrieve(io.micronaut.http.HttpRequest<I> request, io.micronaut.core.type.Argument<O> bodyType, io.micronaut.core.type.Argument<E> errorType)voidsetMediaTypeCodecRegistry(io.micronaut.http.codec.MediaTypeCodecRegistry mediaTypeCodecRegistry)Sets theMediaTypeCodecRegistryused by this client.io.micronaut.http.client.HttpClientstart()io.micronaut.http.client.HttpClientstop()io.micronaut.http.client.BlockingHttpClienttoBlocking()-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface io.micronaut.http.client.HttpClient
exchange, exchange, exchange, exchange, exchange, refresh, retrieve, retrieve, retrieve, retrieve
-
-
-
-
Constructor Detail
-
DefaultHttpClient
public DefaultHttpClient(@Nullable io.micronaut.http.client.LoadBalancer loadBalancer, @NonNull io.micronaut.http.client.HttpClientConfiguration configuration, @Nullable java.lang.String contextPath, @Nullable java.util.concurrent.ThreadFactory threadFactory, NettyClientSslBuilder nettyClientSslBuilder, io.micronaut.http.codec.MediaTypeCodecRegistry codecRegistry, @Nullable io.micronaut.core.annotation.AnnotationMetadataResolver annotationMetadataResolver, java.util.List<io.micronaut.scheduling.instrument.InvocationInstrumenterFactory> invocationInstrumenterFactories, io.micronaut.http.filter.HttpClientFilter... filters)Construct a client for the given arguments.- Parameters:
loadBalancer- TheLoadBalancerto use for selecting serversconfiguration- TheHttpClientConfigurationobjectcontextPath- The base URI to prepend to request uristhreadFactory- The thread factory to use for client threadsnettyClientSslBuilder- The SSL buildercodecRegistry- TheMediaTypeCodecRegistryto use for encoding and decoding objectsannotationMetadataResolver- The annotation metadata resolverinvocationInstrumenterFactories- The invocation instrumeter factories to instrument netty handlers execution withfilters- The filters to use
-
DefaultHttpClient
public DefaultHttpClient(@Nullable io.micronaut.http.client.LoadBalancer loadBalancer, @Nullable io.micronaut.http.HttpVersion explicitHttpVersion, @NonNull io.micronaut.http.client.HttpClientConfiguration configuration, @Nullable java.lang.String contextPath, @NonNull io.micronaut.http.filter.HttpClientFilterResolver<io.micronaut.http.client.filter.ClientFilterResolutionContext> filterResolver, java.util.List<io.micronaut.http.filter.HttpFilterResolver.FilterEntry<io.micronaut.http.filter.HttpClientFilter>> clientFilterEntries, @Nullable java.util.concurrent.ThreadFactory threadFactory, @NonNull NettyClientSslBuilder nettyClientSslBuilder, @NonNull io.micronaut.http.codec.MediaTypeCodecRegistry codecRegistry, @NonNull io.micronaut.websocket.context.WebSocketBeanRegistry webSocketBeanRegistry, @NonNull io.micronaut.http.bind.RequestBinderRegistry requestBinderRegistry, @Nullable io.netty.channel.EventLoopGroup eventLoopGroup, @NonNull io.netty.channel.ChannelFactory socketChannelFactory, java.util.Collection<io.micronaut.http.netty.channel.ChannelPipelineListener> pipelineListeners, NettyClientCustomizer clientCustomizer, java.util.List<io.micronaut.scheduling.instrument.InvocationInstrumenterFactory> invocationInstrumenterFactories, @Nullable java.lang.String informationalServiceId)Construct a client for the given arguments.- Parameters:
loadBalancer- TheLoadBalancerto use for selecting serversexplicitHttpVersion- The HTTP version to use. Can be null and defaults toHttpVersion.HTTP_1_1configuration- TheHttpClientConfigurationobjectcontextPath- The base URI to prepend to request urisfilterResolver- The http client filter resolverclientFilterEntries- The client filter entriesthreadFactory- The thread factory to use for client threadsnettyClientSslBuilder- The SSL buildercodecRegistry- TheMediaTypeCodecRegistryto use for encoding and decoding objectswebSocketBeanRegistry- The websocket bean registryrequestBinderRegistry- The request binder registryeventLoopGroup- The event loop group to usesocketChannelFactory- The socket channel factorypipelineListeners- The listeners to call for pipeline customizationclientCustomizer- The pipeline customizerinvocationInstrumenterFactories- The invocation instrumeter factories to instrument netty handlers execution withinformationalServiceId- Optional service ID that will be passed to exceptions created by this client
-
DefaultHttpClient
public DefaultHttpClient(@Nullable java.net.URI uri)- Parameters:
uri- The URL
-
DefaultHttpClient
public DefaultHttpClient()
-
DefaultHttpClient
public DefaultHttpClient(@Nullable java.net.URI uri, @NonNull io.micronaut.http.client.HttpClientConfiguration configuration)- Parameters:
uri- The URIconfiguration- TheHttpClientConfigurationobject
-
DefaultHttpClient
public DefaultHttpClient(@Nullable io.micronaut.http.client.LoadBalancer loadBalancer, io.micronaut.http.client.HttpClientConfiguration configuration, java.util.List<io.micronaut.scheduling.instrument.InvocationInstrumenterFactory> invocationInstrumenterFactories)- Parameters:
loadBalancer- TheLoadBalancerto use for selecting serversconfiguration- TheHttpClientConfigurationobjectinvocationInstrumenterFactories- The invocation instrumeter factories to instrument netty handlers execution with
-
-
Method Detail
-
getConfiguration
public io.micronaut.http.client.HttpClientConfiguration getConfiguration()
- Returns:
- The configuration used by this client
-
getLog
public org.slf4j.Logger getLog()
- Returns:
- The client-specific logger name
-
start
public io.micronaut.http.client.HttpClient start()
- Specified by:
startin interfaceio.micronaut.context.LifeCycle<io.micronaut.http.client.HttpClient>
-
isRunning
public boolean isRunning()
- Specified by:
isRunningin interfaceio.micronaut.context.LifeCycle<io.micronaut.http.client.HttpClient>
-
stop
public io.micronaut.http.client.HttpClient stop()
- Specified by:
stopin interfaceio.micronaut.context.LifeCycle<io.micronaut.http.client.HttpClient>
-
getMediaTypeCodecRegistry
public io.micronaut.http.codec.MediaTypeCodecRegistry getMediaTypeCodecRegistry()
- Returns:
- The
MediaTypeCodecRegistryused by this client
-
setMediaTypeCodecRegistry
public void setMediaTypeCodecRegistry(io.micronaut.http.codec.MediaTypeCodecRegistry mediaTypeCodecRegistry)
Sets theMediaTypeCodecRegistryused by this client.- Parameters:
mediaTypeCodecRegistry- The registry to use. Should not be null
-
toBlocking
public io.micronaut.http.client.BlockingHttpClient toBlocking()
- Specified by:
toBlockingin interfaceio.micronaut.http.client.HttpClient
-
eventStream
public <I> org.reactivestreams.Publisher<io.micronaut.http.sse.Event<io.micronaut.core.io.buffer.ByteBuffer<?>>> eventStream(@NonNull io.micronaut.http.HttpRequest<I> request)- Specified by:
eventStreamin interfaceio.micronaut.http.client.sse.SseClient
-
eventStream
public <I,B> org.reactivestreams.Publisher<io.micronaut.http.sse.Event<B>> eventStream(@NonNull io.micronaut.http.HttpRequest<I> request, @NonNull io.micronaut.core.type.Argument<B> eventType)- Specified by:
eventStreamin interfaceio.micronaut.http.client.sse.SseClient
-
eventStream
public <I,B> org.reactivestreams.Publisher<io.micronaut.http.sse.Event<B>> eventStream(@NonNull io.micronaut.http.HttpRequest<I> request, @NonNull io.micronaut.core.type.Argument<B> eventType, @NonNull io.micronaut.core.type.Argument<?> errorType)- Specified by:
eventStreamin interfaceio.micronaut.http.client.sse.SseClient
-
dataStream
public <I> org.reactivestreams.Publisher<io.micronaut.core.io.buffer.ByteBuffer<?>> dataStream(@NonNull io.micronaut.http.HttpRequest<I> request)- Specified by:
dataStreamin interfaceio.micronaut.http.client.StreamingHttpClient
-
dataStream
public <I> org.reactivestreams.Publisher<io.micronaut.core.io.buffer.ByteBuffer<?>> dataStream(@NonNull io.micronaut.http.HttpRequest<I> request, @NonNull io.micronaut.core.type.Argument<?> errorType)- Specified by:
dataStreamin interfaceio.micronaut.http.client.StreamingHttpClient
-
exchangeStream
public <I> org.reactivestreams.Publisher<io.micronaut.http.HttpResponse<io.micronaut.core.io.buffer.ByteBuffer<?>>> exchangeStream(@NonNull io.micronaut.http.HttpRequest<I> request)- Specified by:
exchangeStreamin interfaceio.micronaut.http.client.StreamingHttpClient
-
exchangeStream
public <I> org.reactivestreams.Publisher<io.micronaut.http.HttpResponse<io.micronaut.core.io.buffer.ByteBuffer<?>>> exchangeStream(@NonNull io.micronaut.http.HttpRequest<I> request, @NonNull io.micronaut.core.type.Argument<?> errorType)- Specified by:
exchangeStreamin interfaceio.micronaut.http.client.StreamingHttpClient
-
jsonStream
public <I,O> org.reactivestreams.Publisher<O> jsonStream(@NonNull io.micronaut.http.HttpRequest<I> request, @NonNull io.micronaut.core.type.Argument<O> type)- Specified by:
jsonStreamin interfaceio.micronaut.http.client.StreamingHttpClient
-
jsonStream
public <I,O> org.reactivestreams.Publisher<O> jsonStream(@NonNull io.micronaut.http.HttpRequest<I> request, @NonNull io.micronaut.core.type.Argument<O> type, @NonNull io.micronaut.core.type.Argument<?> errorType)- Specified by:
jsonStreamin interfaceio.micronaut.http.client.StreamingHttpClient
-
jsonStream
public <I> org.reactivestreams.Publisher<java.util.Map<java.lang.String,java.lang.Object>> jsonStream(@NonNull io.micronaut.http.HttpRequest<I> request)- Specified by:
jsonStreamin interfaceio.micronaut.http.client.StreamingHttpClient
-
jsonStream
public <I,O> org.reactivestreams.Publisher<O> jsonStream(@NonNull io.micronaut.http.HttpRequest<I> request, @NonNull java.lang.Class<O> type)- Specified by:
jsonStreamin interfaceio.micronaut.http.client.StreamingHttpClient
-
exchange
public <I,O,E> org.reactivestreams.Publisher<io.micronaut.http.HttpResponse<O>> exchange(@NonNull io.micronaut.http.HttpRequest<I> request, @NonNull io.micronaut.core.type.Argument<O> bodyType, @NonNull io.micronaut.core.type.Argument<E> errorType)- Specified by:
exchangein interfaceio.micronaut.http.client.HttpClient
-
retrieve
public <I,O,E> org.reactivestreams.Publisher<O> retrieve(io.micronaut.http.HttpRequest<I> request, io.micronaut.core.type.Argument<O> bodyType, io.micronaut.core.type.Argument<E> errorType)- Specified by:
retrievein interfaceio.micronaut.http.client.HttpClient
-
connect
public <T extends java.lang.AutoCloseable> org.reactivestreams.Publisher<T> connect(java.lang.Class<T> clientEndpointType, io.micronaut.http.MutableHttpRequest<?> request)- Specified by:
connectin interfaceio.micronaut.websocket.WebSocketClient
-
connect
public <T extends java.lang.AutoCloseable> org.reactivestreams.Publisher<T> connect(java.lang.Class<T> clientEndpointType, java.util.Map<java.lang.String,java.lang.Object> parameters)- Specified by:
connectin interfaceio.micronaut.websocket.WebSocketClient
-
close
public void close()
- Specified by:
closein interfacejava.lang.AutoCloseable- Specified by:
closein interfacejava.io.Closeable- Specified by:
closein interfaceio.micronaut.context.LifeCycle<io.micronaut.http.client.HttpClient>- Specified by:
closein interfaceio.micronaut.websocket.WebSocketClient
-
proxy
public org.reactivestreams.Publisher<io.micronaut.http.MutableHttpResponse<?>> proxy(@NonNull io.micronaut.http.HttpRequest<?> request)- Specified by:
proxyin interfaceio.micronaut.http.client.ProxyHttpClient
-
proxy
public org.reactivestreams.Publisher<io.micronaut.http.MutableHttpResponse<?>> proxy(@NonNull io.micronaut.http.HttpRequest<?> request, @NonNull io.micronaut.http.client.ProxyRequestOptions options)- Specified by:
proxyin interfaceio.micronaut.http.client.ProxyHttpClient
-
resolveRequestURI
protected <I> org.reactivestreams.Publisher<java.net.URI> resolveRequestURI(io.micronaut.http.HttpRequest<I> request)
- Type Parameters:
I- The input type- Parameters:
request- The request- Returns:
- A
Publisherwith the resolved URI
-
resolveRequestURI
protected <I> org.reactivestreams.Publisher<java.net.URI> resolveRequestURI(io.micronaut.http.HttpRequest<I> request, boolean includeContextPath)- Type Parameters:
I- The input type- Parameters:
request- The requestincludeContextPath- Whether to prepend the client context path- Returns:
- A
Publisherwith the resolved URI
-
resolveRedirectURI
protected <I> org.reactivestreams.Publisher<java.net.URI> resolveRedirectURI(io.micronaut.http.HttpRequest<?> parentRequest, io.micronaut.http.HttpRequest<I> request)- Type Parameters:
I- The input type- Parameters:
parentRequest- The parent requestrequest- The redirect location request- Returns:
- A
Publisherwith the resolved URI
-
prependContextPath
protected java.net.URI prependContextPath(java.net.URI requestURI)
- Parameters:
requestURI- The request URI- Returns:
- A URI that is prepended with the contextPath, if set
-
getLoadBalancerDiscriminator
protected java.lang.Object getLoadBalancerDiscriminator()
- Returns:
- The discriminator to use when selecting a server for the purposes of load balancing (defaults to null)
-
buildNettyRequest
protected io.micronaut.http.client.netty.DefaultHttpClient.NettyRequestWriter buildNettyRequest(io.micronaut.http.MutableHttpRequest request, java.net.URI requestURI, io.micronaut.http.MediaType requestContentType, boolean permitsBody, @Nullable io.micronaut.core.type.Argument<?> bodyType, java.util.function.Consumer<? super java.lang.Throwable> onError) throws io.netty.handler.codec.http.multipart.HttpPostRequestEncoder.ErrorDataEncoderException- Parameters:
request- The requestrequestURI- The URI of the requestrequestContentType- The request content typepermitsBody- Whether permits bodybodyType- The body typeonError- Called when the body publisher encounters an error- Returns:
- A
DefaultHttpClient.NettyRequestWriter - Throws:
io.netty.handler.codec.http.multipart.HttpPostRequestEncoder.ErrorDataEncoderException- if there is an encoder exception
-
-