如何从 Elixir 的结果中获取状态码
How to get status code from result in 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 returns 包含各种信息的元组。状态码可以通过如下方式获取。
: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 库,如 httpoison or httpotion.
我正在使用 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 returns 包含各种信息的元组。状态码可以通过如下方式获取。
: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 库,如 httpoison or httpotion.