解决Network.HTTP'用户错误(不支持https)'

Uli*_*ler 4 https haskell

使用以下命令运行此Haskell程序时runghc:

import Network.HTTP

main = simpleHTTP (getRequest "https://stackoverflow.com")
       >>= getResponseBody >>= putStrLn
Run Code Online (Sandbox Code Playgroud)

我收到错误消息

printso.hs: user error (https not supported)
Run Code Online (Sandbox Code Playgroud)

我不想切换到未加密的HTTP - 我如何使用Network.HTTPSSL/TLS?

Uli*_*ler 6

您无法直接执行此操作,请参阅此帖子.但是您可以Network.HTTP.Conduithttp-conduit库中使用.

首先使用安装它cabal install http-conduit.

然后您可以使用此代码(请注意,它与Network.HTTP使用lazy ByteStrings 形成鲜明对比)作为替代:

import Network.HTTP.Conduit
import qualified Data.ByteString.Lazy as LB

main = simpleHttp "https://stackoverflow.com"
       >>= LB.putStr
Run Code Online (Sandbox Code Playgroud)

另一种方法是使用依赖于本机libcurl的Haskell libcurl绑定.