Esiste un modo per effettuare chiamate https con il pacchetto Network.Browser. Non lo vedo nello documentation on Hackage.
Se non c'è un modo per farlo con browse c'è un altro modo per recuperare le pagine https?Haskell Network.Browser Connessione HTTPS
mio codice di prova corrente è
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
Ho corso nc -l -p 8000 e guardare l'output. vedo che non crittografa quando faccio retrieveUrl https://localhost:8000
Anche quando provo un vero e proprio sito https ottengo:
Network.Browser.request: Error raised ErrorClosed
*** Exception: user error (Network.Browser.request: Error raised ErrorClosed)
Edit: soluzione Network.Curl (per fare un SOAP chiamano)
import Network.Curl (curlGetString)
import Network.Curl.Opts
soapHeader s = CurlHttpHeaders ["Content-Type: text/xml", "SOAPAction: " ++ s]
proxy = CurlProxy "proxy.foo.org"
envelope = "myRequestEnvelope.xml"
headers = readFile envelope >>= (\x -> return [ soapHeader "myAction"
, proxy
, CurlPost True
, CurlPostFields [x]])
main = headers >>= curlGetString "https://service.endpoint"
Non avresti dovuto accettare quella risposta; poiché SO è a beneficio di tutti, avere una domanda aperta avrebbe stimolato più risposte (o addirittura lo sviluppo). – drozzy
@drozzy vale la pena di rispondere anche se una risposta è stata esclusa. http-conduit è un pacchetto più recente e sembra essere una risposta più comoda al problema. – Davorak