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,Closeable,AutoCloseable
@Internal
public class DefaultHttpClient
extends 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, Closeable, AutoCloseable
Default implementation of the
HttpClient interface based on Netty.- Since:
- 1.0
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final classKey used for connection pooling and determining host/port. -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected io.micronaut.core.io.buffer.ByteBufferFactory<io.netty.buffer.ByteBufAllocator,io.netty.buffer.ByteBuf> protected io.micronaut.http.codec.MediaTypeCodecRegistryFields inherited from interface io.micronaut.http.client.HttpClient
DEFAULT_ERROR_TYPEFields inherited from interface io.micronaut.websocket.WebSocketClient
SCHEME_WS, SCHEME_WSS -
Constructor Summary
ConstructorsConstructorDescriptionDefaultHttpClient(@Nullable io.micronaut.http.client.LoadBalancer loadBalancer, @NonNull io.micronaut.http.client.HttpClientConfiguration configuration, @Nullable String contextPath, @Nullable ThreadFactory threadFactory, ClientSslBuilder nettyClientSslBuilder, @NonNull io.micronaut.http.codec.MediaTypeCodecRegistry codecRegistry, @NonNull io.micronaut.http.body.MessageBodyHandlerRegistry handlerRegistry, @Nullable io.micronaut.core.annotation.AnnotationMetadataResolver annotationMetadataResolver, io.micronaut.core.convert.ConversionService conversionService, io.micronaut.http.filter.HttpClientFilter... filters) Construct a client for the given arguments.DefaultHttpClient(@Nullable io.micronaut.http.client.LoadBalancer loadBalancer, @Nullable io.micronaut.http.client.HttpVersionSelection explicitHttpVersion, @NonNull io.micronaut.http.client.HttpClientConfiguration configuration, @Nullable String contextPath, @NonNull io.micronaut.http.filter.HttpClientFilterResolver<io.micronaut.http.client.filter.ClientFilterResolutionContext> filterResolver, @NonNull List<io.micronaut.http.filter.HttpFilterResolver.FilterEntry> clientFilterEntries, @Nullable ThreadFactory threadFactory, @NonNull ClientSslBuilder nettyClientSslBuilder, @NonNull io.micronaut.http.codec.MediaTypeCodecRegistry codecRegistry, @NonNull io.micronaut.http.body.MessageBodyHandlerRegistry handlerRegistry, @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<? extends io.netty.channel.socket.SocketChannel> socketChannelFactory, @NonNull io.netty.channel.ChannelFactory<? extends io.netty.channel.socket.DatagramChannel> udpChannelFactory, NettyClientCustomizer clientCustomizer, @Nullable String informationalServiceId, io.micronaut.core.convert.ConversionService conversionService) Construct a client for the given arguments.DefaultHttpClient(@Nullable io.micronaut.http.client.LoadBalancer loadBalancer, io.micronaut.http.client.HttpClientConfiguration configuration) DefaultHttpClient(@Nullable URI uri) DefaultHttpClient(@Nullable URI uri, @NonNull io.micronaut.http.client.HttpClientConfiguration configuration) -
Method Summary
Modifier and TypeMethodDescriptionprotected io.micronaut.http.client.netty.DefaultHttpClient.NettyRequestWriterbuildNettyRequest(io.micronaut.http.MutableHttpRequest request, URI requestURI, io.micronaut.http.MediaType requestContentType, boolean permitsBody, @Nullable io.micronaut.core.type.Argument<?> bodyType, Consumer<? super Throwable> onError) voidclose()<T extends AutoCloseable>
org.reactivestreams.Publisher<T><T extends AutoCloseable>
org.reactivestreams.Publisher<T>Access to the connection manager, for micronaut-oracle-cloud.<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, @NonNull 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, @NonNull 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, @NonNull io.micronaut.core.type.Argument<B> eventType, @NonNull io.micronaut.core.type.Argument<?> errorType) <I,O, E> org.reactivestreams.Publisher<io.micronaut.http.HttpResponse<O>> exchange(io.micronaut.http.HttpRequest<I> request, @NonNull io.micronaut.core.type.Argument<O> bodyType, @NonNull 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, @NonNull io.micronaut.core.type.Argument<?> errorType) io.micronaut.http.client.HttpClientConfigurationfinal @NonNull io.micronaut.http.body.MessageBodyHandlerRegistryGet the handler registry for this client.protected Objectorg.slf4j.LoggergetLog()io.micronaut.http.codec.MediaTypeCodecRegistrybooleanjsonStream(io.micronaut.http.HttpRequest<I> request) <I,O> org.reactivestreams.Publisher<O> jsonStream(io.micronaut.http.HttpRequest<I> request, @NonNull io.micronaut.core.type.Argument<O> type) <I,O> org.reactivestreams.Publisher<O> jsonStream(io.micronaut.http.HttpRequest<I> request, @NonNull io.micronaut.core.type.Argument<O> type, @NonNull io.micronaut.core.type.Argument<?> errorType) <I,O> org.reactivestreams.Publisher<O> jsonStream(io.micronaut.http.HttpRequest<I> request, @NonNull Class<O> type) 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, @NonNull io.micronaut.http.client.ProxyRequestOptions options) protected <I> org.reactivestreams.Publisher<URI>resolveRedirectURI(io.micronaut.http.HttpRequest<?> parentRequest, io.micronaut.http.HttpRequest<I> request) protected <I> org.reactivestreams.Publisher<URI>resolveRequestURI(io.micronaut.http.HttpRequest<I> request) protected <I> org.reactivestreams.Publisher<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) final voidsetHandlerRegistry(@NonNull io.micronaut.http.body.MessageBodyHandlerRegistry handlerRegistry) Set the handler registry for this client.voidsetMediaTypeCodecRegistry(io.micronaut.http.codec.MediaTypeCodecRegistry mediaTypeCodecRegistry) Deprecated.io.micronaut.http.client.HttpClientstart()io.micronaut.http.client.HttpClientstop()io.micronaut.http.client.BlockingHttpClientMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface io.micronaut.http.client.HttpClient
exchange, exchange, exchange, exchange, exchange, refresh, retrieve, retrieve, retrieve, retrieveMethods inherited from interface io.micronaut.http.client.sse.SseClient
eventStream, eventStream, eventStreamMethods inherited from interface io.micronaut.websocket.WebSocketClient
connect, connect
-
Field Details
-
mediaTypeCodecRegistry
protected io.micronaut.http.codec.MediaTypeCodecRegistry mediaTypeCodecRegistry -
byteBufferFactory
protected io.micronaut.core.io.buffer.ByteBufferFactory<io.netty.buffer.ByteBufAllocator,io.netty.buffer.ByteBuf> byteBufferFactory
-
-
Constructor Details
-
DefaultHttpClient
public DefaultHttpClient(@Nullable @Nullable io.micronaut.http.client.LoadBalancer loadBalancer, @NonNull @NonNull io.micronaut.http.client.HttpClientConfiguration configuration, @Nullable @Nullable String contextPath, @Nullable @Nullable ThreadFactory threadFactory, ClientSslBuilder nettyClientSslBuilder, @NonNull @NonNull io.micronaut.http.codec.MediaTypeCodecRegistry codecRegistry, @NonNull @NonNull io.micronaut.http.body.MessageBodyHandlerRegistry handlerRegistry, @Nullable @Nullable io.micronaut.core.annotation.AnnotationMetadataResolver annotationMetadataResolver, io.micronaut.core.convert.ConversionService conversionService, 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 objectshandlerRegistry- The handler registry for encoding and decodingannotationMetadataResolver- The annotation metadata resolverconversionService- The conversion servicefilters- The filters to use
-
DefaultHttpClient
public DefaultHttpClient(@Nullable @Nullable io.micronaut.http.client.LoadBalancer loadBalancer, @Nullable @Nullable io.micronaut.http.client.HttpVersionSelection explicitHttpVersion, @NonNull @NonNull io.micronaut.http.client.HttpClientConfiguration configuration, @Nullable @Nullable String contextPath, @NonNull @NonNull io.micronaut.http.filter.HttpClientFilterResolver<io.micronaut.http.client.filter.ClientFilterResolutionContext> filterResolver, @NonNull @NonNull List<io.micronaut.http.filter.HttpFilterResolver.FilterEntry> clientFilterEntries, @Nullable @Nullable ThreadFactory threadFactory, @NonNull @NonNull ClientSslBuilder nettyClientSslBuilder, @NonNull @NonNull io.micronaut.http.codec.MediaTypeCodecRegistry codecRegistry, @NonNull @NonNull io.micronaut.http.body.MessageBodyHandlerRegistry handlerRegistry, @NonNull @NonNull io.micronaut.websocket.context.WebSocketBeanRegistry webSocketBeanRegistry, @NonNull @NonNull io.micronaut.http.bind.RequestBinderRegistry requestBinderRegistry, @Nullable @Nullable io.netty.channel.EventLoopGroup eventLoopGroup, @NonNull @NonNull io.netty.channel.ChannelFactory<? extends io.netty.channel.socket.SocketChannel> socketChannelFactory, @NonNull @NonNull io.netty.channel.ChannelFactory<? extends io.netty.channel.socket.DatagramChannel> udpChannelFactory, NettyClientCustomizer clientCustomizer, @Nullable @Nullable String informationalServiceId, io.micronaut.core.convert.ConversionService conversionService) 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 objectshandlerRegistry- The handler registry for encoding and decodingwebSocketBeanRegistry- The websocket bean registryrequestBinderRegistry- The request binder registryeventLoopGroup- The event loop group to usesocketChannelFactory- The socket channel factoryudpChannelFactory- The UDP channel factoryclientCustomizer- The pipeline customizerinformationalServiceId- Optional service ID that will be passed to exceptions created by this clientconversionService- The conversion service
-
DefaultHttpClient
- Parameters:
uri- The URL
-
DefaultHttpClient
public DefaultHttpClient() -
DefaultHttpClient
public DefaultHttpClient(@Nullable @Nullable URI uri, @NonNull @NonNull io.micronaut.http.client.HttpClientConfiguration configuration) - Parameters:
uri- The URIconfiguration- TheHttpClientConfigurationobject
-
DefaultHttpClient
public DefaultHttpClient(@Nullable @Nullable io.micronaut.http.client.LoadBalancer loadBalancer, io.micronaut.http.client.HttpClientConfiguration configuration) - Parameters:
loadBalancer- TheLoadBalancerto use for selecting serversconfiguration- TheHttpClientConfigurationobject
-
-
Method Details
-
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
-
connectionManager
Access to the connection manager, for micronaut-oracle-cloud.- Returns:
- The connection manager of this client
-
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
@Deprecated public void setMediaTypeCodecRegistry(io.micronaut.http.codec.MediaTypeCodecRegistry mediaTypeCodecRegistry) Deprecated.Sets theMediaTypeCodecRegistryused by this client.- Parameters:
mediaTypeCodecRegistry- The registry to use. Should not be null
-
getHandlerRegistry
@NonNull public final @NonNull io.micronaut.http.body.MessageBodyHandlerRegistry getHandlerRegistry()Get the handler registry for this client.- Returns:
- The handler registry
-
setHandlerRegistry
public final void setHandlerRegistry(@NonNull @NonNull io.micronaut.http.body.MessageBodyHandlerRegistry handlerRegistry) Set the handler registry for this client.- Parameters:
handlerRegistry- The handler registry
-
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 @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 @NonNull io.micronaut.core.type.Argument<B> eventType, @NonNull @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 @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 @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 @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 @NonNull io.micronaut.core.type.Argument<O> type, @NonNull @NonNull io.micronaut.core.type.Argument<?> errorType) - Specified by:
jsonStreamin interfaceio.micronaut.http.client.StreamingHttpClient
-
jsonStream
public <I> org.reactivestreams.Publisher<Map<String,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 @NonNull Class<O> type) - Specified by:
jsonStreamin interfaceio.micronaut.http.client.StreamingHttpClient
-
exchange
public <I,O, org.reactivestreams.Publisher<io.micronaut.http.HttpResponse<O>> exchangeE> (@NonNull io.micronaut.http.HttpRequest<I> request, @NonNull @NonNull io.micronaut.core.type.Argument<O> bodyType, @NonNull @NonNull io.micronaut.core.type.Argument<E> errorType) - Specified by:
exchangein interfaceio.micronaut.http.client.HttpClient
-
retrieve
public <I,O, org.reactivestreams.Publisher<O> retrieveE> (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 AutoCloseable> org.reactivestreams.Publisher<T> connect(Class<T> clientEndpointType, io.micronaut.http.MutableHttpRequest<?> request) - Specified by:
connectin interfaceio.micronaut.websocket.WebSocketClient
-
connect
public <T extends AutoCloseable> org.reactivestreams.Publisher<T> connect(Class<T> clientEndpointType, Map<String, Object> parameters) - Specified by:
connectin interfaceio.micronaut.websocket.WebSocketClient
-
close
public void close()- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- 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 @NonNull io.micronaut.http.client.ProxyRequestOptions options) - Specified by:
proxyin interfaceio.micronaut.http.client.ProxyHttpClient
-
resolveRequestURI
protected <I> org.reactivestreams.Publisher<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<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<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
-
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, URI requestURI, io.micronaut.http.MediaType requestContentType, boolean permitsBody, @Nullable @Nullable io.micronaut.core.type.Argument<?> bodyType, Consumer<? super 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
-