다른 서버에서 웹 서비스를 호출하는 Yesod 웹 응용 프로그램이 있습니다. 해당 웹 서비스에 대한 요청에 대해 yesod의 Http 관리자를 다시 사용합니다. 일부 호출에서는 Yesod 오류가 발생하며 오류 처리가 Manager에 포함되어 있지 않기 때문에 왜 Yesod 오류 처리기가 시작되는지 알지 못합니다. 내 코드가 HTTP 응답에서 자체 상태 처리를 수행합니다 (요청시 let req' = req { H.checkStatus = \_ _ _ -> Nothing }
).Yese.Core.Class.Yesod의 ParseError
오류 내가 갖는 :
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)
나는 웹 서비스가 오류를 반환하는 뚜렷한 인상을 가지고 있고, Yesod 내 코드 대신에 그것을 처리한다. 내 웹 서비스 클라이언트 코드는 오류 페이지로 리다이렉트되는 예외를 throw하고 서비스 호출시 오류가 발생하면 제대로 작동하지만 일부 요청에서이 ParseError를 얻는 이유를 이해하지 못합니다.
요청과 웹 서비스에서받은 응답을 덤프하고 있습니다. 로그에 응답이 표시되지 않습니다. 이는 yesod가 응답을 가로 채고 있음을 나타내는 것 같습니다.
아이디어가 있으십니까?
attoparsec 오류 메시지처럼 보입니다. aeson으로 잘못된 json 데이터를 파싱하고 있습니까? –
예, 웹 서비스는 json을 되돌려 보낼 예정 이었지만 어떤 경우에는 그렇지 않았기 때문에 parseerror가 전송되어 절대로 잡히지 않았습니다. 나는 붙잡음을 추가했고 모든 것이 잘되었습니다. –