我对 elixir 很陌生,没有 erlang 经验(或 func-y 的东西),但这很快就会变得明显..->
iex(2)> :inets.start()
:ok
iex(3)> :httpc.request(["http://www.erlang.org"])
{:error, :no_scheme}
我不知道 :no_scheme 是什么意思。我用谷歌搜索了 no_scheme 之类的东西,我确信这很明显,但我真的什么也没找到。我可以在 erlang 文档中找到的唯一模糊相关的东西是 ->
iex(4)> :http_uri.scheme_defaults
[http: 80, https: 443, ftp: 21, ssh: 22, sftp: 22, tftp: 69]
或者也许我不符合 RFC2616 或其他什么......我没有想法(现在)。
Elixir 和 Erlang 非常棒,但如果能帮助我推进我的旅程,我将不胜感激。
谢谢你的帮助!
我在erl中试过了。
1> inets:start().
ok
2> httpc:request("http://www.erlang.org").
{ok,{{"HTTP/1.1",200,"OK"},
[{"date","Wed, 20 Nov 2013 23:15:45 GMT"},
{"server","inets/5.7.1"},
{"content-length","10385"},
{"content-type","text/html; charset=utf-8"},
{"set-cookie",
"eptic_cookie=erlangorg@hades-3680318586833850369; path=/"}],
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!DOCTYPE htm
etc...
编辑:
好的,我最大的问题是我"http://www.erlang.org"
对字符串进行了双引号,我猜 elixir -> erlang 将它们像 parrotys answer 一样单引号'http://www.erlang.org'
。
no_scheme 仍然很神秘。我能找到的只是与重定向和 RFC 实现有关的东西。我刚刚决定将其视为一般错误,与网址有关。
编辑2:
有人在这里发表了一篇博客文章,对此进行了很好的解释。关联
像数据库这样的 Erlang 原子变成 :database,像 Erlang 版本中的 PgConn 这样的局部变量在 Elixir 中变成 pg_conn。
当字符串字面量是 Erlang 函数的参数时,我们需要用单引号引起来。如果您将 UTF-8 字符串存储在 Elixir 变量中,则可以使用 binary_to_list/1 函数将其转换为字符列表。
编辑3:
具有讽刺意味的是,几个小时前发布的名为“HTTP 客户端”的最新 Elixir Sip 涵盖了我的整个问题。看看任何遇到这就是未来的人!