我想使用Network.HTTP.Conduit
中的基本身份验证,但无法使其正常工作。
来自文档......
applyBasicAuth :: ByteString -> ByteString -> Request m -> Request mSource
将Basic Auth标头(带有指定的用户名和密码)添加到给定的请求中。忽略错误处理:
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'
答案 0 :(得分:4)
“不在范围内:fromJust”表示编译器找不到fromJust
,因为它没有在您的模块或任何导入的模块中定义(包括默认情况下自动导入的Prelude)。
您需要自己从正确的模块导入它。你可以find out which one using Hoogle。
在这种情况下,您需要导入Data.Maybe
。