What are good http clients for Scala?
At work we’ve been working around a bug in async-http-client for some years and I’ve finally gotten permission to replace it. (The bug is at the boundary between async-http-client and netty . Characteristic symptom is
Caused by: io.netty.handler.codec.EncoderException: java.lang.IllegalStateException: unexpected message type: DefaultHttpRequest, state:
1 , described at Duplicate handler name: request-body-streamer · Issue #1660 · AsyncHttpClient/async-http-client · GitHub . Retrying works around the problem, but I explain what is happening too frequently.)
We have several hospitals who use client-side http proxying - that’s likely the most stringent requirement. (That unfortunately eliminates the Blaze client - we’ve been very happy with every other aspect of http4s.)
We’d very much prefer something NIO-based, or at least non-blocking. A client that can recycle existing connections would benefit performance. Something that plays nice with http4s already would save us work.
What’s out there for us to try?