如何从Elixir中的结果中获取状态代码

时间:2015-02-21 04:16:34

标签: erlang elixir

我使用elixir和httpc erlang模块来ping网站。我可以很好地访问网站但是当我尝试使用status_code时,我得到一个参数错误。我可以看到数据存在于错误中,但我不确定为什么会抛出错误。

我应该提供什么参数?我认为这个函数只返回一个整数,但它看起来像是在期待某些东西。

:inets.start
{:ok, result} = :httpc.request(:get, {'http://www.erlang.org', []}, [], [])
result.status_code()                                                               
** (ArgumentError) argument error
  :erlang.apply({'HTTP/1.1', 200, 'OK'}, :status_code, [])

1 个答案:

答案 0 :(得分:5)

:httpc.request返回包含各种信息的元组。可以按如下方式检索状态代码。

:inets.start
{:ok, result} = :httpc.request(:get, {'http://www.erlang.org', []}, [], [])
{status_line, headers, body} = result
{http_version, status_code, reason_phrase} = status_line

元组结构在httpc doc中描述。 (http://erlang.org/doc/man/httpc.html#request-4

如果你想使用更多的elixir风格的语法(比如result.status_code),一个选项是使用一些elixir库,如httpoisonhttpotion