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

标签 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, [])

最佳答案

: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 文档中所示。 (http://erlang.org/doc/man/httpc.html#request-4)

如果您想使用更多 Elixir 风格的语法(例如 result.status_code),一种选择是使用一些 Elixir 库,例如 httpoisonhttpotion .

关于erlang - 如何从 Elixir 中的结果获取状态代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28642018/

相关文章:

ruby - 为什么 Haskell 没有符号(像 ruby​​)/原子(像 erlang)?

tcp - Erlang:{packet,N} 选项适用于 N = 0 但不适用于 1,2,4?

elixir - Elixir Enum 或任何其他模块是否具有类似于 ruby​​ 的 group_by 的 group_by 函数

transactions - Mnesia 异常退出 : {aborted, {bad_type, Record}}

erlang - 调用 gen_server :cast from Mod:handle_cast

php - Erlang 和 PHP 之间的加密

hex - Elixir mix 自动确认

elixir - 如何在 Elixir 中获取当前操作系统名称?

elixir - 你能在 elixir 中模式匹配一​​个非空数组吗?

elixir - 文件包含 2 个模块时出现警告 "Redefining module"