Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 从Network.HTTP.Enumerator迁移到Network.HTTP.conductor_Haskell_Yesod_Conduit_Http Conduit - Fatal编程技术网

Haskell 从Network.HTTP.Enumerator迁移到Network.HTTP.conductor

Haskell 从Network.HTTP.Enumerator迁移到Network.HTTP.conductor,haskell,yesod,conduit,http-conduit,Haskell,Yesod,Conduit,Http Conduit,我不知道为什么我的代码会出错。起初我认为这是因为parseURL为requestHeaders提供了[]。好吧,也许我只需要告诉它resquestHeaders应该是什么。嗯,我检查了从我的旧的工作代码生成的requestHeaders。它也会返回一个[]。所以现在我没有主意了。下面是旧的工作代码,下面是我在GHCi中使用新的基于管道的库尝试的东西 captureRawJson :: IO Response captureRawJson = do nManager <- newMa

我不知道为什么我的代码会出错。起初我认为这是因为
parseURL
requestHeaders
提供了
[]
。好吧,也许我只需要告诉它resquestHeaders应该是什么。嗯,我检查了从我的旧的工作代码生成的
requestHeaders
。它也会返回一个
[]
。所以现在我没有主意了。下面是旧的工作代码,下面是我在GHCi中使用新的基于管道的库尝试的东西

captureRawJson :: IO Response
captureRawJson = do
    nManager <- newManager
    jRequest <- parseUrl url :: (IO (Request IO))
    jResponse <- httpLbsRedirect jRequest nManager
    closeManager nManager
    return jResponse
captureRawJson::IO响应
captureRawJson=do

nManager我相信tls包中的一些更改解决了这一问题。我刚刚发布了http导管1.2.5,请看一下,看看它是否解决了问题


如果您仍然收到错误消息,可能是SSL证书与您连接的主机名不匹配。

错误消息来自tls,而不是http管道,因此我不确定这是否真的是http管道中的更改。你能试着对最新的tls包重新编译http枚举器,看看会发生什么吗?我只安装了tls 0.8.5(最新的afaik),所以这必须是http枚举器生成的依据。@Michael-这是状态。我升级到http enumerator的0.7.2.5,这消除了迁移到http管道的动力。所以没有真正的紧迫性。但是,我想和那些很酷的孩子们一起玩,如果可能的话,想办法让http管道工作。如果你能在公共服务器上重现这个问题,那么我们可以试着调试它。但我们不能对私有服务器进行测试。好的,这需要一些时间才能完成,但我想我可以做到。
Prelude Network.HTTP.Conduit> nManager <- newManager def
Prelude Network.HTTP.Conduit> jRequest <- parseUrl "https://10.69.69.1/cgi-bin/qaLinkEditor.cgi?json=1" :: (IO (Request IO))
Prelude Network.HTTP.Conduit> let response = httpLbs jRequest nManager
Prelude Network.HTTP.Conduit Control.Monad.Trans.Resource> runResourceT response
*** Exception: error unexpected packet: Handshake [ServerHelloDone]