这是一个很好的问题,因为不幸的inets:start/[0,1,2,3]
函数重载并且httpc
文档不是很清楚,启动inets
也会自动启动httpc
服务。
特别是当 on 只是跳转到HTTP CLIENT SERVICE START/STOP部分以快速启动时,因此缺少模块描述中的注释。
start() ->
start(Type) -> ok | {error, Reason}
启动 Inets 应用程序。
start(Service, ServiceConfig) -> {ok, Pid} | {error, Reason}
start(Service, ServiceConfig, How) -> {ok, Pid} | {error, Reason}
在启动Inets 应用程序后 动态启动 Inets 服务
(使用inets:start/[0,1]
)。
关于注意事项httpc
从httpc
模块文档的顶部:
启动 Inets 应用程序时,会启动默认配置文件的管理器进程。此 API 中未明确使用配置文件的函数将访问默认配置文件。
也就是说,该httpc
服务将使用名为 的默认配置文件自动启动default
。
1> inets:start().
ok
2> httpc:get_options(all, default).
{ok,[{proxy,{undefined,[]}},
{https_proxy,{undefined,[]}},
{pipeline_timeout,0},
{max_pipeline_length,2},
{max_keep_alive_length,5},
{keep_alive_timeout,120000},
{max_sessions,2},
{cookies,disabled},
{verbose,false},
{ipfamily,inet},
{ip,default},
{port,default},
{socket_opts,[]},
{unix_socket,undefined}]}
3>
3> inets:start(httpc, [{profile, lofa}]).
{ok,<0.95.0>}
4>
5> httpc:get_options(all, default).
{ok,[...]}
6> httpc:get_options(all, lofa).
{ok,[...]}
有趣的是,当使用不存在的配置文件时,错误消息是inets_not_started
:
7> httpc:get_options(all, balabab).
{error,inets_not_started}