I tried to find any mention of handling of compression in new Java HTTP Client but failed. Is there a built-in configuration to handle for e.g. gzip
or deflate
compression?
I would expect to have a BodyHandler
for e.g. something like this:
HttpResponse.BodyHandlers.ofGzipped(HttpResponse.BodyHandlers.ofString())
but I don’t see any. I don’t see any configuration in HttpClient
either. Am I looking in the wrong place or was this intentionally not implemented and deferred to support libraries?
Advertisement
Answer
No, gzip/deflate compression are not handled by default. You would have to implement that in your application code if you need it – e.g. by providing a customized BodySubscriber
to handle it. Alternatively – you may want to have a look at whether some of the reactive stream libraries out there offer such a feature, in which case you might be able to pipe that in by using one of the BodyHandlers.fromSubscriber​(Flow.Subscriber<? super List<ByteBuffer>> subscriber)
or BodyHandlers.ofPublisher()
methods.