0

我想使用基本身份验证Network.HTTP.Conduit,但无法使其工作。

从文档...

applyBasicAuth :: ByteString -> ByteString -> Request m -> Request mSource

将基本身份验证标头(具有指定的用户名和密码)添加到给定的请求。忽略错误处理:

applyBasicAuth 用户通过 $ fromJust $ parseUrl url

但是当我尝试在一个简单的“Hello World”示例中实现它时:

import Data.ByteString as B

import Network.HTTP.Conduit
import Network.Socket

main :: IO ()
main = withSocketsDo $ do
  req <- applyBasicAuth user pass $ fromJust $ parseUrl "http://www.oracle.com"
  response <- withManager $ httpLbs req
  B.putStrLn $ responseBody response
  where
    user = B.pack "scott"
    pass = B.pack "tiger"

编译失败:不在范围内:fromJust

make fromJust.exe && ./fromJust.exe
ghc --make fromJust.hs
[1 of 1] Compiling Main             ( fromJust.hs, fromJust.o )

fromJust.hs:16:37: Not in scope: `fromJust'
4

1 回答 1

4

“不在范围内:fromJust”意味着编译器找不到fromJust,因为它没有在您的模块或任何导入的模块中定义(包括默认情况下自动导入的 Prelude)。

您需要自己从正确的模块中导入它。您可以使用 Hoogle 找出哪一个

在这种情况下,您需要导入Data.Maybe.

于 2013-05-08T01:22:43.347 回答