我尝试在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
工作的正确方法是什么?
答案 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).