从responseCookieJar中检索值

时间:2014-07-06 12:24:30

标签: haskell http-conduit

以下是我发送get请求的方式:

import Network.HTTP.Conduit
import Control.Applicative ((<$>))
import Network.HTTP.Types

request <- parseUrl $ "someUrl"
res <- withManager $ httpLbs request
putStrLn $ show $ responseCookieJar res

而不是打印responseCookieJar我希望从中获取值。这http://hackage.haskell.org/package/http-conduit-2.1.2/docs/Network-HTTP-Conduit.html#t:CookieJar意味着它是不可能的。所以我想我必须解析(通过regexp)它作为一个字符串。但必须有一种标准的方法,比如通过密钥获取值。

不存在吗?

2 个答案:

答案 0 :(得分:3)

您可以使用destroyCookieJar将其转换为Cookie的列表,然后您可以通过各种字段访问器进行检查。

对密钥最有用的两个可能是cookie_namecookie_path。所以你可能会做类似

的事情
filter (\c -> cookie_name c == pack "foo") . destroyCookieJar

(使用Data.Bytestring.Char8中的pack

或者,如果有很多Cookie并且您想要进行多次查询,您可能希望首先从名称到Cookie构建类似Map的内容。

答案 1 :(得分:3)

您可以致电destroyCookieJar将其分解为单个Cookie,然后搜索该列表。