Inviare una richiesta http con autenticazione di base

Haskell:
Inviare una richiesta http con autenticazione di base

How to:

Per eseguire una richiesta HTTP con autenticazione di base in Haskell, utilizziamo la libreria http-conduit. Installala con cabal install http-conduit.

import Network.HTTP.Simple
import Network.HTTP.Types.Header (hAuthorization)
import Data.ByteString.Base64 (encode)
import qualified Data.ByteString.Char8 as BS

main :: IO ()
main = do
  let username = "utente"
  let password = "secret"
  let auth = BS.concat ["Basic ", encode (BS.concat [username, ":", password])]
  
  request' <- parseRequest "http://esempio.com/dati"
  let request = setRequestHeader hAuthorization [auth] request'

  response <- httpLBS request
  putStrLn $ "Status code: " ++ show (getResponseStatusCode response)
  print $ getResponseBody response

Esegui e vedi il risultato, che includerà il codice di stato e il contenuto della risposta.

Deep Dive

L’autenticazione HTTP di base esiste dagli inizi del web. Sebbene non sia la più sicura (le credenziali sono codificate in Base64 ma non criptate), è semplice da implementare. Oggi, sarebbe meglio usare alternative come l’autenticazione OAuth. In Haskell, le richieste HTTP sfruttano le librerie come http-conduit, che gestiscono dettagli basso-livello come la connessione di rete e l’elaborazione delle risposte.

See Also