我正在编写将通过 HTTP 下载一些文件的应用程序。到目前为止,我一直在使用以下代码片段来下载页面正文:
import network.HTTP
simpleHTTP (getRequest "http://www.haskell.org/") >>= getResponseBody
它工作正常,但无法通过 HTTPS 协议建立连接。所以为了解决这个问题,我已经切换到 HTTP-Conduit,现在我正在使用以下代码:
simpleHttp' :: Manager -> String -> IO (C.Response LBS.ByteString)
simpleHttp' manager url = do
request <- parseUrl url
runResourceT $ httpLbs request manager
它可以连接到 HTTPS,但出现了新的令人沮丧的问题。大约每五次连接失败,但有例外:
getpics.hs: FailedConnectionException "i.imgur.com" 80
我确信这是 HTTP-Conduit 问题,因为 network.HTTP 在同一组页面(不包括 https 页面)上运行良好。
有没有人遇到过这样的问题并且知道解决方案或更好的解决方案(而且很简单,因为这是一个简单的任务,不应该花费超过几行代码)替代 Conduit 库?