[英]How to construct Manager object in http-conduit?
繼續執行dropbox查詢我正在使用http-conduit嘗試執行POST請求,但我不確定如何構造Manager
對象。
這是我到目前為止(以及有問題的一行):
data DropboxConfig = DropboxConfig { appKey :: String, appSecret :: String}
main = do
let appKey = "asdfasdfasdfs"
let appSecret = ";lkj;lkjlkjlkj"
let config = DropboxConfig {appKey = appKey, appSecret = appSecret}
let qs = buildQueryString config
let req = def {method = methodPost, queryString = qs}
resp <- http req (newManager) --!Does Not work
putStrLn $ unpack resp
buildQueryString :: DropboxConfig -> ByteString
buildQueryString config = pack $ "oauth_consumer_key="++(appKey config)++
"&oauth_signature_method=HMAC-SHA1"++
"&oauth_timestamp=137131200" ++
"&oauth_nonce=4572616e48616d6d65724c61686176" ++
"&oauth_signature=wOJIO9A2W5mFwDgiDvZbTSMK%2FPY%3D
這是我得到的錯誤:
Couldn't match expected type `http-conduit-1.3.0.1:Network.HTTP.Conduit.Manager.Manager'
with actual type `http-conduit-1.3.0.1:Network.HTTP.Conduit.Manager.ManagerSettings
-> IO http-conduit-1.3.0.1:Network.HTTP.Conduit.Manager.Manager'
類型簽名說明了一切,真的:
newManager :: ManagerSettings -> IO Manager
這是一個IO動作,所以你必須使用<-
一如既往地綁定它。 它還需要ManagerSettings
,因此您需要提供它。 這樣的事情應該這樣做,我認為(不太熟悉圖書館,只是遵循類型):
manager <- newManager def
resp <- http req manager
但是,使用withManager
可能是一個更好的主意,因此您不必擔心自己關閉它。
withManager $ \manager -> do
resp <- http req manager
...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.