2016-07-10 7 views
0

Ich benutze diese Zeile von Haskell Code, um den Inhalt einer HTTP-Antwort zu lesen:Wie bekomme ich Daten von HTTPS-Antworten mit Haskell?

simpleHTTP (getRequest addr) >>= getResponseBody

Diese Linie für Domains wie http://www.example.com funktioniert sehr gut, aber wenn ich so etwas wie https://www.example.com versuchen, erhalte ich eine Fehlermeldung, dass HTTPS nicht unterstützt wird.

Wie kann ich das Code-Snippet für HTTPS arbeiten lassen?

Vielen Dank im Voraus :)

PS: Ich mag keine zusätzliche Bibliotheken Es ist wirklich einfach mit dem http-Kanal-Paket

+2

Sie werden dies nicht ohne zusätzliche Bibliotheken in der Lage zu tun, wenn Sie neu implementieren [ 'http-Klient'] (http://hackage.haskell.org/package /http-client-0.5.1/docs/Network-HTTP-Client.html), welches die Standardmethode ist. Das "httpLbs" in "http-Conduit" verwendet dies. – Michael

Antwort

1

installieren. Zum Beispiel:

bash> stack --resolver lts-6.7 repl http-conduit 
ghci> :set -XOverloadedStrings 
ghci> import qualified Network.HTTP.Simple as H 
ghci> H.getResponseBody <$> H.httpLBS "https://google.com" 

https://www.stackage.org/haddock/lts-6.7/http-conduit-2.1.11/Network-HTTP-Simple.html#v:httpLBS

+0

Ja, aber ich möchte keine zusätzlichen Pakete installieren. –

+0

Gibt es eine Möglichkeit, das nur mithilfe von Haskell-Plattform zu tun? –

+2

Es mag sein, aber ich habe mich nie darum gekümmert. Die Dokumentation für "Network.HTTP" besagt, dass "dieses Paket nur HTTP unterstützt; HTTPS wird nicht unterstützt. Versuche, HTTPS zu verwenden, führen zu einem Fehler." Ich denke jedoch, dass dies veraltet sein könnte und es möglich sein könnte, die in "Network.TCP" (vom selben Paket) bereitgestellten Sachen zu verwenden. –