我对elixir很新,并且没有erlang经验(或功能性的东西),但很快就会变得明显.. - >
iex(2)> :inets.start()
:ok
iex(3)> :httpc.request(["http://www.erlang.org"])
{:error, :no_scheme}
Run Code Online (Sandbox Code Playgroud)
我不知道是什么:no_scheme意味着什么.我用谷歌搜索了no_scheme和东西,我确信它很明显,但我没有发现任何真的.我在erlang文档中找到的唯一模糊相关的东西是 - >
iex(4)> :http_uri.scheme_defaults
[http: 80, https: 443, ftp: 21, ssh: 22, sftp: 22, tftp: 69]
Run Code Online (Sandbox Code Playgroud)
或者我可能不符合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...
Run Code Online (Sandbox Code Playgroud)
好吧,我最大的问题是我是双引用"http://www.erlang.org"字符串而我猜elixir - > erlang将它们引入像parrotys一样的单引号'http://www.erlang.org'.
no_scheme仍然很神秘.我能找到的只是与重定向和RFC实现相关的东西.我刚刚决定将它视为一般错误,与url有关..
这里有一篇博客文章,有人解释得很好.链接
像数据库这样的Erlang原子成为:数据库和Erlang版本中的PgConn之类的局部变量在Elixir中成为pg_conn.
当它们是Erlang函数的参数时,我们需要单引号字符串文字.如果您有一个存储在Elixir变量中的UTF-8字符串,您可以使用binary_to_list/1函数将其转换为char列表.
具有讽刺意味的是,几小时前发布的名为"HTTP客户端"的最新Elixir Sip涵盖了我的整个问题.看看有人遇到这个是未来!
par*_*oty 17
以下是怎样的?
:inets.start
:httpc.request(:get, {'http://www.erlang.org', []}, [], [])
Run Code Online (Sandbox Code Playgroud)
""在erlang是char列表而在elixir是''(""在elixir中binary)
你可以:httpc.request('http://www.erlang.org')很快使用
对于https请求,还有一个附加步骤-需要SSL:
> :inets.start
> :ssl.start
> :httpc.request ‘https://elixir-lang.org'
Run Code Online (Sandbox Code Playgroud)
请注意较短的请求格式。
我正在使用IEx 1.7.3(与Erlang / OTP 21编译)。