defaultManagerSettings不在Network.HTTP.Conduit的范围内

时间:2014-01-24 16:30:37

标签: haskell http-conduit

http-conduit版本2.0+中,我想创建一个自定义Manager

文档说明defaultManagerSettings应使用newManager

import Network.HTTP.Conduit
main = do manager <- newManager defaultManagerSettings
          print $ content

但是,在尝试运行它时,我收到以下错误:

conduittest.hs:3:33:
    Not in scope: `defaultManagerSettings'
    Perhaps you meant `conduitManagerSettings' (imported from Network.HTTP.Conduit)

我应该使用conduitManagerSettings吗?如果没有,我可以从哪里导入defaultManagerSettings

注意:这个问题故意不会显示进一步的研究工作,因为它立即以Q&amp; A风格的方式回答。

1 个答案:

答案 0 :(得分:0)

正如newManager docs中所列,您可以像这样导入defaultManagerSettings

import Network.HTTP.Client (defaultManagerSettings)

让我们来看看conduitManagerSettings是什么:

conduitManagerSettings :: ManagerSettings
conduitManagerSettings = tlsManagerSettings

Network.HTTP.Client.TLS中,tlsManagerSettings的定义如下:

tlsManagerSettings :: ManagerSettings
tlsManagerSettings = mkManagerSettings def Nothing

好的,这里没什么特别的。 def来自Data.Default模块,因此定义了默认实例。但是defaultManagerSettings指定所有默认值。

我无法追踪instance Default ManagerSettings所在的位置。但是我认为可以安全地假设mkManagerSettings def Nothing具有与defaultManagerSettings相同的设置。

我个人建议使用defaultManagerSettings,因为将来这些行为都可能会发生变化。