Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Networking Haskell网络浏览器HTTPS连接_Networking_Haskell_Https - Fatal编程技术网

Networking Haskell网络浏览器HTTPS连接

Networking Haskell网络浏览器HTTPS连接,networking,haskell,https,Networking,Haskell,Https,是否有一种使用Network.Browser包进行https呼叫的方法。 我没有在电视上看到它。 如果没有一种方法可以通过浏览来获取https页面,还有其他方法吗 我当前的测试代码是 import Network.HTTP import Network.URI (parseURI) import Network.HTTP.Proxy import Data.Maybe (fromJust) import Control.Applicative ((<$>)) import Netwo

是否有一种使用Network.Browser包进行https呼叫的方法。 我没有在电视上看到它。
如果没有一种方法可以通过浏览来获取https页面,还有其他方法吗

我当前的测试代码是

import Network.HTTP
import Network.URI (parseURI)
import Network.HTTP.Proxy
import Data.Maybe (fromJust)
import Control.Applicative ((<$>))
import Network.Browser

retrieveUrl :: String -> IO String
retrieveUrl url = do
  rsp <- browse $ request (Request (fromJust uri) POST [] "Body")
  return $ snd (rspBody <$> rsp)
  where uri = parseURI url
编辑:Network.Curl解决方案(用于执行SOAP调用)


过去我一直在想这一点,最后总是使用。如果有一个更简单的解决方案就好了,但是
Network.Curl
非常方便。

如果您只想获取一个页面,这是最简单的方法。附件a:

import Network.HTTP.Wget

main = putStrLn =<< wget "https://www.google.com" [] []
import Network.HTTP.Wget

main=putStrLn=一个替代方案,也许更像Travis Brown在http管道中所说的“Haskell”解决方案:

要仅获取https页面,请执行以下操作:

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

main = simpleHttp "https://www.noisebridge.net/wiki/Noisebridge" >>= L.putStr
下面显示了如何传递urlencode参数

{-# LANGUAGE OverloadedStrings #-}

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

main = do
  initReq <- parseUrl "https://www.googleapis.com/urlshortener/v1/url"
  let req' = initReq { secure = True } -- Turn on https
  let req = (flip urlEncodedBody) req' $
             [ ("longUrl", "http://www.google.com/")
--             ,
             ]
  response <- withManager $ httpLbs req
  L.putStr $ responseBody response
{-#语言重载字符串}
导入Network.HTTP.conductor
将限定的Data.ByteString.Lazy作为L导入
main=do

initReq是的,我最终选择了Network.Curl。基于你的建议,谢谢你的帮助。@AlexKahn我相信这是正确的(仍然是在2013年)。在我刚刚注意到的一个模块中有一点提到,你不应该接受这个答案;因为这是为了每个人的利益——有一个开放的问题会刺激更多的答案(甚至发展)。@drozzy仍然值得回答,即使答案被排除在外。http导管是一个较新的包,似乎是解决这个问题的一个更方便的方法。
import Network.HTTP.Conduit
import qualified Data.ByteString.Lazy as L

main = simpleHttp "https://www.noisebridge.net/wiki/Noisebridge" >>= L.putStr
{-# LANGUAGE OverloadedStrings #-}

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

main = do
  initReq <- parseUrl "https://www.googleapis.com/urlshortener/v1/url"
  let req' = initReq { secure = True } -- Turn on https
  let req = (flip urlEncodedBody) req' $
             [ ("longUrl", "http://www.google.com/")
--             ,
             ]
  response <- withManager $ httpLbs req
  L.putStr $ responseBody response