我对elixir很新,没有erlang经验(或功能性的东西),但很快就会变得明显.. - >
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 - &gt; erlang将它们作为单引号引用,如parrotys回答'http://www.erlang.org'
。
no_scheme仍然非常神秘。我能找到的只是与重定向和RFC实现相关的东西。我刚刚决定将它视为一般错误,与url有关..
这里有一篇博客文章,有人解释得很好。 Link
像数据库这样的Erlang原子变成:数据库和Erlang版本中的PgConn之类的局部变量在Elixir中成为pg_conn。
当它们是Erlang函数的参数时,我们需要单引号字符串文字。如果您有一个存储在Elixir变量中的UTF-8字符串,您可以使用binary_to_list / 1函数将其转换为char列表。
答案 0 :(得分:14)
以下是怎样的?
:inets.start
:httpc.request(:get, {'http://www.erlang.org', []}, [], [])
答案 1 :(得分:7)
""
是char列表,而elixir中的''
是""
(elixir中的binary
是:httpc.request('http://www.erlang.org')
)
您可以很快使用{{1}}
答案 2 :(得分:3)
对于 https 请求,还有一个附加步骤-需要SSL:
> :inets.start
> :ssl.start
> :httpc.request ‘https://elixir-lang.org'
请注意较短的请求格式。
我正在使用IEx 1.7.3(与Erlang / OTP 21编译)。