I've been using the Databinder Dispatch library in a client for a simple REST-ish API. I know how to detect if I get an HTTP response with an error status:
Http x (request) {
case (200, _, _, content) => successResult(content())
case (404, _, _, _) => notFoundErrorResult
case (_, _, _, _) => genericErrorResult
}
But how can I distinguish an error response from a failure to get any response at all, because of an invalid domain or failure to connect? And is there any way to implement a timeout while still using synchronous semantics? If there's anything relevant in the API, I've missed it.
There is also a more elegant way to configure client using
Http.configure
method which receivesBuilder => Builder
function as an argument:In case you are using Dispatch reboot (with AsyncHttpClient as the underlying library) this is how you'd set the client configuration:
and then just use this new object as you'd otherwise use
http
:The Periodic Table tells us that
>!
sets up an exception listener and a recent mailing list thread explains how to set a timeout.All together, then, you might do something like:
Note that I haven't tested this...