Ho utilizzato la libreria Databinder Dispatch in un client per una semplice API REST-ish. So come rilevare se ottengo una risposta HTTP con uno stato di errore:Libreria di distribuzione Scala: come gestire l'errore di connessione o il timeout?
Http x (request) {
case (200, _, _, content) => successResult(content())
case (404, _, _, _) => notFoundErrorResult
case (_, _, _, _) => genericErrorResult
}
Ma come posso distinguere una risposta di errore da un fallimento di ottenere qualsiasi risposta a tutti, a causa di un dominio o il fallimento non valida per la connessione ? E c'è un modo per implementare un timeout mentre si utilizza ancora la semantica sincrona? Se c'è qualcosa di rilevante nell'API, l'ho perso.
Grazie ... ma non credo che l'ExceptionListener fa quello che voglio . Voglio fare in modo che la richiesta HTTP restituisca qualche valore X se ha ottenuto l'eccezione E. Sembra che ExceptionListener non restituisca nulla: è definito come Catcher [Unità]. Viene appena chiamato e quindi Http ripaga l'eccezione. Quindi penso che ho bisogno di fare un tentativo/cattura dopo tutto, che è quello che volevo evitare. –