我有一个 Yesod Web 应用程序,它调用另一台服务器上的 Web 服务。我将 yesod 中的 Http 管理器重用于我对该 Web 服务的请求。在某些调用中,我收到 Yesod 错误,并且我不确定 Yesod 错误处理程序为何会启动,因为错误处理不是 Manager 的一部分。我的代码对 HTTP 响应进行自己的状态处理(我let req' = req { H.checkStatus = \_ _ _ -> Nothing }
对请求进行处理)。
我得到的错误:
07/Jun/2013:14:05:15 +0200 [Error#yesod-core] ParseError {errorContexts = [], errorMessage = "Failed reading: satisfy", errorPosition = 1:1} @(yesod-core-1.2.0.4:Yesod.Core.Class.Yesod ./Yesod/Core/Class/Yesod.hs:471:5)
我有一个明显的印象,Web 服务返回一个错误,Yesod 正在处理它而不是我的代码。我的 Web 服务客户端代码抛出异常,该异常被捕获以重定向到错误页面,当我在服务调用中出错时效果很好,我只是不明白为什么我会在某些请求上得到这个 ParseError。
我正在转储从 Web 服务获得的请求和响应,但我从未在日志中看到响应,这似乎表明 yesod 正在拦截响应。
任何想法?