Haskell:
Skicka en http-förfrågan

How to:

I Haskell används ofta biblioteket http-conduit för att skicka HTTP-begäran. Här är hur du gör en enkel GET-begäran:

import Network.HTTP.Simple

main :: IO ()
main = do
    response <- httpLBS "http://httpbin.org/get"
    putStrLn $ "Statuskod: " ++ show (getResponseStatusCode response)
    putStrLn $ "Svarskropp: " ++ show (getResponseResponseBody response)

Kör programmet och förvänta dig något liknande:

Statuskod: 200
Svarskropp: "{\"args\":{},\"headers\":{...},\"origin\":\"...\",\"url\":\"http://httpbin.org/get\"}"

Deep Dive

HTTP-begäran har varit grundläggande för webbprogrammering sedan tidiga 90-talet. Alternativ till http-conduit inkluderar http-client och lågnivåbibliotek som network. http-conduit använder http-client under huven men förenklar hantering av begäran och svar.

För att skicka en POST-begäran och hantera headers använd följande kod:

{-# LANGUAGE OverloadedStrings #-}

import Network.HTTP.Simple

main :: IO ()
main = do
    let request
            = setRequestMethod "POST"
            $ setRequestPath "/post"
            $ setRequestHost "httpbin.org"
            $ setRequestHeader "Content-Type" ["application/json"]
            $ setRequestBodyLBS "{\"sample\":\"data\"}"
            $ defaultRequest
    response <- httpLBS request
    putStrLn $ "Statuskod: " ++ show (getResponseStatusCode response)
    putStrLn $ "Svarskropp: " ++ show (getResponseResponseBody response)

Detta öppnar för mer kontroll med fler alternativ för konfiguration av begäran.

See Also