erlang异常错误:未定义函数lhttpc:start / 0

时间:2014-08-29 01:58:22

标签: erlang

我尝试在noproc函数中调用httpc:request(get, ...)时收到geturl/1个异常

** exception exit: {noproc,{gen_server,call,
                                   [httpc_manager,
                                    {request,{request,undefined,<0.54.0>,0,http,

为了解决这个问题,我根据这个答案在我的start中加了testurl/0来电:https://stackoverflow.com/a/14553219/58129

testurl() ->
    ssl:start(),
    lhttpc:start(),
    geturl("http://www.cnn.com").

失败并出现此错误:

so1:testurl().
** exception error: undefined function lhttpc:start/0
     in function  so1:testurl/0 (so1.erl, line 7)

我谷歌,我找不到称为lhttpc的模块。使httpc:request工作的正确方法是什么?

1 个答案:

答案 0 :(得分:6)

在httpc的文档中,您可以阅读:

  

启动Inets应用程序时,将启动默认配置文件的管理器进程。此API中未明确使用配置文件的功能将访问默认配置文件。配置文件会跟踪代理选项,Cookie以及可应用于多个请求的其他选项。

     

如果使用方案https,则需要启动ssl应用程序。当https链接需要通过代理时,使用CONNECT方法扩展到HTTP-1.1建立隧道,然后连接升级到TLS,但不支持根据RFC 2817的“TLS升级”。

     

另请注意,只有在设置了管道超时时才会使用流水线操作,否则将使用不使用流水线操作的持久连接e.i.客户端总是在发送下一个请求之前等待先前的响应。

简而言之:你必须启动inets:

application:start(inets).

这对于非ssl连接就足够了。对于https连接,您还需要启动:

application:start(crypto),
application:start(public_key),
application:start(ssl),
application:start(inets).