检查wreq请求标头

时间:2015-03-16 16:31:58

标签: haskell

我对Haskell很新,我不确定如何实现这一目标。我使用wreq作为HTTP客户端,我想检查哪些HTTP标头被发送到服务器。例如,我定义了以下方法,尝试使用Facebook凭据进行身份验证:

authenticate ⦂ String → String → IO (Response ByteString)
authenticate facebookId facebookToken =
    postWith opts "https://api.somedomain.com/auth" (object $ ["facebook_token" .= facebookToken, "facebook_id" .= facebookId])
      where opts = defaults & header "Content-Type" .~ ["application/json"]
                            & header "Accept" .~ ["application/json"]
                            & proxy ?~ httpProxy "localhost" 9396

使用POSTman我得到了正确的答案但是wreq我被禁止访问(403)。我假设库中可能会添加一些额外的请求标头,这就是我想要检查的内容。

任何提示?

编辑:http代理现在用于检查HTTP流量(但是未检测到wreq个请求)。

1 个答案:

答案 0 :(得分:3)

在Wreq中,Options类型是Show的一个实例,因此您可以将其传递给print,或者只是在ghci上检查它:

ghci> import Network.Wreq
ghci> defaults :: Options
Options { manager = Left _, proxy = Nothing, auth = Nothing, headers = 
[("User-Agent","haskell wreq-0.3.0.1")], params = [], redirects = 10, cookies = [] }

您还可以使用headers镜头直接关注标题:

ghci> defaults ^. headers
[("User-Agent","haskell wreq-0.3.0.1")]

但是如果Wreq在将选项传递给postWith后添加一些标题,则必须使用像Fiddler这样的Web调试代理来了解正在发生的事情。