https аутентификация с использованием Haskell - PullRequest
0 голосов
/ 05 сентября 2018

Я пытаюсь написать программу на haskell, которая обращается к URL-адресу https и автоматически загружает файл. Сайт запрашивает аутентификацию. Я попытался использовать библиотеку Req , но не смог понять все концепции сети и сетей.

Может кто-нибудь дать мне какой-нибудь шаблон кода или хотя бы точнее сказать мне, где я могу найти нужные мне функции?

Это код, который я написал до сих пор, но он не работает:

import Control.Monad
import Control.Monad.IO.Class
import Data.Aeson
import Data.Default.Class
import Data.Maybe (fromJust)
import Data.Monoid ((<>))
import Data.Text as T
import GHC.Generics
import Network.HTTP.Req
import qualified Data.ByteString.Char8 as B

main = runReq def $ do
    let myMethod = GET
        myUrl = https $ T.pack "https://..."
        myBody = NoReqBody
        myProxy = ignoreResponse
        myOption = basicAuth (B.pack "user") (B.pack "password")
    m <- req myMethod myUrl myBody myProxy myOption
    return ()

1 Ответ

0 голосов
/ 05 сентября 2018

Пример примера использования пакета http-client:

#!/usr/bin/env stack
-- stack script --resolver lts-12.7
{-# LANGUAGE OverloadedStrings #-}
import qualified Data.ByteString.Lazy.Char8 as L8
import           Network.HTTP.Client        (defaultManagerSettings, Manager, applyBasicAuth)
import           Network.HTTP.Simple
import Network.HTTP.Client.TLS (getGlobalManager)

main :: IO ()
main = do
    manager <- getGlobalManager

    printResponse manager "http://some-domain.com"


printResponse :: Manager -> Request -> IO ()    
printResponse mgr url = do
  let request = setRequestManager mgr url
      request' = applyBasicAuth "user" "password" request
  response <- httpLBS request'

  putStrLn $ "The status code was: " ++  show (getResponseStatusCode response)
  print $ getResponseHeader "Content-Type" response
  L8.putStrLn $ getResponseBody response

Некоторая справочная документация:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...