我正在试图弄清楚如何对Haskell中的网站执行GET和POST,我似乎很难解决如何进行简单的POST。我确定这是一个GET。
import Network.HTTP.Conduit
import Data.Conduit
import Data.Conduit.Binary (sinkFile)
import qualified Data.ByteString.Lazy as L
import Control.Monad.IO.Class (liftIO)
import Control.Monad.Trans.Resource (runResourceT)
main :: IO ()
main = do
runResourceT $ do
case parseUrl"https://www.google.com" of
Nothing -> liftIO $ putStr "Not a valid URL"
Just req -> withManager $ \manager -> do
res <- httpLbs req manager
liftIO . L.putStr $ responseBody res
有人可以告诉我一个如何在haskell中进行POST的示例。我试图在某个地方找到一个很好的例子,我可以理解,但没有运气!你可以通过使用帖子值“登录” - &gt;来告诉我吗? “詹姆斯”,“通行证” - &gt; “我的密码”。提前谢谢!
答案 0 :(得分:0)
您需要更改Request
数据类型,以表明它是POST
方法调用。另外,请确保安装了最新的http-client (version 0.3.6)
,因为Michael Snoyman最近添加了setQueryString功能。
{-# LANGUAGE OverloadedStrings #-}
import Network.HTTP.Conduit
import Control.Monad.IO.Class
import qualified Data.ByteString.Lazy as L
import Control.Monad.Trans.Resource
main :: IO ()
main = do
runResourceT $ do
initReq <- parseUrl"https://www.google.com"
let req = initReq {
method = "POST"
}
req' = setQueryString [("login", Just "James"),("Pass", Just "MyPassword")] req
withManager $ \manager -> do
res <- httpLbs req' manager
liftIO . L.putStr $ responseBody res