我用open_in
它打开一个本地文件及其路径:
let f = open_in "/Users/SoftTimur/file.txt" in
...
Run Code Online (Sandbox Code Playgroud)
现在,我想打开一个带有URL的可下载文件:
let f = open_in "http://caml.inria.fr/distrib/ocaml-4.02/ocaml-4.02-refman.txt" in
...
Run Code Online (Sandbox Code Playgroud)
返回错误Fatal error: exception Sys_error("http://caml.inria.fr/distrib/ocaml-4.02/ocaml-4.02-refman.txt: No such file or directory")
.
有谁知道我可以用哪个功能打开这样一个可下载的文件?我是否必须先将其下载到本地(OCaml如何做到这一点?)?
嗯,OCaml中有很多库可以处理http
协议,特别是网络通信.它们都不会提供类型的函数,string -> in_channel
因为in_channel
类型是OCaml拥有的抽象.该语言不允许我们创建自己的通道类型1的实现.
我知道和使用的库是:
据推测还有其他人,请随时编辑此答案并添加它们.
我个人更喜欢异步monadic cohttp
,但它更容易开始ocamlnet
,这也是一个很好的库,具有很多功能.这是如何在OCaml顶级中使用它:
# #use "topfind"
# #require "netclient";
# module Client = Nethttp_client.Convenience
# let ocamldoc = Client.http_get "http://caml.inria.fr/distrib/ocaml-4.02/ocaml-4.02-refman.txt";;
Run Code Online (Sandbox Code Playgroud)
在开始播放之前,请确保已安装它
opam install ocamlnet
Run Code Online (Sandbox Code Playgroud)
脚注: