2015-03-16 2 views
3

Я довольно новичок в Haskell, и я не уверен, как я могу это достичь. Я использую wreq в качестве HTTP-клиента, и я хотел бы проверить, какие HTTP-заголовки отправляются на сервер. Например, я определил следующий метод, который пытается проверить подлинность с помощью учетных данных Facebook:Проверить заголовки запроса wreq

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 

почтальона я получаю правильный ответ, но с wreq я получаю запрещенный доступ (403). Я предполагаю, что некоторые дополнительные заголовки запросов могут быть добавлены библиотекой, и это то, что я хотел бы проверить.

Любые подсказки?

EDIT: HTTP-прокси теперь используется для проверки HTTP-трафика (wreq запросов пока не обнаружено).

ответ

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, вам придется использовать веб-Дебу gging proxy, как Fiddler, чтобы знать, что происходит.

+0

Спасибо. Я пытаюсь использовать веб-прокси без особого успеха, запросы, вызванные с помощью 'wreq', не обнаружены. См. Обновленный вопрос. Есть идеи? – jarandaf

+0

И, наконец, это была несвязанная проблема (запросы 'https' напрямую не отслеживаются). – jarandaf

+2

Для дальнейшего использования вы можете использовать http://httpbin.org/ для проверки этих вещей. Это действительно отлично. –

Смежные вопросы