Haskell 神秘闭合手柄案例

Haskell 神秘闭合手柄案例,haskell,conduit,Haskell,Conduit,首先我会给你代码,然后是错误,然后是一些类型信息。问题是:我怎样才能弄清楚到底发生了什么?我该如何解决这个问题 readTask = do req' <- parseUrl "https://10.64.251.32/rest/api/latest/issue/BNAP-291" manager <- newManager manSettings let req'' = applyBasicAuth (pack "sandboxer") (pack "sandbo

首先我会给你代码,然后是错误,然后是一些类型信息。问题是:我怎样才能弄清楚到底发生了什么?我该如何解决这个问题

readTask = do
   req' <-  parseUrl "https://10.64.251.32/rest/api/latest/issue/BNAP-291"
   manager <- newManager manSettings
   let req'' = applyBasicAuth (pack "sandboxer") (pack "sandboxer") req'
   Response _ _ _ body <-runResourceT $ http req'' manager 
   pBody <- runResourceT $
            body $$+- sinkParser json

   --   print pBody
   --   closeManager manager

   return ()
      where manSettings =
               def
                 { managerCheckCerts = \ _ _ -> return CertificateUsageAccept }

感谢反馈,我不知道如何开始对此进行故障排除。

第一个
runResourceT
调用是在解析主体之前关闭套接字。您需要将这两个
runResourceT
调用合并为一个调用
ResourceT
是一个
Monad
实例,因此您可以使用
do
表示法,并在解析完成后进行一些小手术以释放套接字:

readTask = do
   req' <-  parseUrl "https://10.64.251.32/rest/api/latest/issue/BNAP-291"
   manager <- newManager manSettings
   let req'' = applyBasicAuth (pack "sandboxer") (pack "sandboxer") req'
   runResourceT $ do
      Response _ _ _ body <- http req'' manager 
      pBody <- body $$+- sinkParser json
      liftIO $ print pBody

   closeManager manager

   return ()
      where manSettings =
               def
                 { managerCheckCerts = \ _ _ -> return CertificateUsageAccept }
readTask=do

req'听起来像是另一方关闭了连接。
http req''管理器
body$$+-sinkparser json
调用不应该在一个
runResourceT
中吗?类似这样的东西(只要它能编译):@Nathan-给那个人一个向上的投票。
Data.Conduit.Internal.ResumableSource
(Control.Monad.Trans.Resource.ResourceT IO)
Data.ByteString.Internal.ByteString
readTask = do
   req' <-  parseUrl "https://10.64.251.32/rest/api/latest/issue/BNAP-291"
   manager <- newManager manSettings
   let req'' = applyBasicAuth (pack "sandboxer") (pack "sandboxer") req'
   runResourceT $ do
      Response _ _ _ body <- http req'' manager 
      pBody <- body $$+- sinkParser json
      liftIO $ print pBody

   closeManager manager

   return ()
      where manSettings =
               def
                 { managerCheckCerts = \ _ _ -> return CertificateUsageAccept }