Eli*_*hop 7 scala databinder scala-dispatch
我一直在客户端使用Databinder Dispatch库来创建一个简单的REST-ish API.我知道如何检测我是否收到错误状态的HTTP响应:
Http x (request) {
case (200, _, _, content) => successResult(content())
case (404, _, _, _) => notFoundErrorResult
case (_, _, _, _) => genericErrorResult
}
Run Code Online (Sandbox Code Playgroud)
但是,由于域无效或连接失败,我如何区分错误响应和完全没有响应的错误?有没有办法在仍然使用同步语义的同时实现超时?如果API中有任何相关内容,我就错过了.
vlp*_*ans 15
还有一种更优雅的方法来配置客户端使用Http.configure方法,该方法接收Builder => Builder函数作为参数:
val http = Http.configure(_.setAllowPoolingConnection(true).setConnectionTimeoutInMs(5000))
Run Code Online (Sandbox Code Playgroud)
元素周期表告诉我们设置异常监听器,最近的邮件列表线程解释了如何设置超时。>!
那么,你可能会做这样的事情:
val http = new dispatch.Http {
import org.apache.http.params.CoreConnectionPNames
client.getParams.setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 2000)
client.getParams.setParameter(CoreConnectionPNames.SO_TIMEOUT, 5000)
}
http(req >! {
case e => // ...
})
Run Code Online (Sandbox Code Playgroud)
请注意,我还没有测试过这个......
| 归档时间: |
|
| 查看次数: |
4954 次 |
| 最近记录: |