如何使用OCaml的Cohttp库来发出HTTPS请求

时间:2017-08-19 13:19:38

标签: ssl https ocaml ocaml-dune

如何通过HTTPS将Cohttp库用于GET网址?

以下是我正在尝试使用的代码:

open Lwt
open Cohttp
open Cohttp_lwt_unix

let url = "https://google.com"

let do_request =
  Client.get (Uri.of_string url) >>= fun (resp, body) ->
  body |> Cohttp_lwt.Body.to_string

let run () =
  let body = Lwt_main.run do_request in
  print_endline ("Received body\n" ^ body)

当我运行它时,我收到以下错误:

Fatal error: exception (Failure "Ssl not available")

如何在使用Cohttp 启用SSL?

另外,作为一个奖金问题,如何在不诉诸此处的情况下解决这个问题?是否有某些我错过的Cohttp文档?

@antron问下面的问题,“您是否安装了ssl库?”

我安装了ssl库:

$ opam list ssl
# Available packages for 4.05.0:
ssl  0.5.3  Bindings for OpenSSL

但是,我不确定这是否相关,但我的cohttp包未在depends上显示ssl

$ opam info --field depends cohttp
base-bytes & jbuilder >= 1.0+beta10 & re & uri >= 1.9.0 & fieldslib & sexplib & ppx_fields_conv >= v0.9.0 & ppx_sexp_conv >= v0.9.0 & stringext & base64 >= 2.0.0 & magic-mime & fmt & logs & jsonm

我使用OCaml版本4.05.0在Arch Linux上运行,通过opam switch安装。

以防万一,这是我正在使用的jbuild文件:

(jbuild_version 1)

(executables
((names (main))
  (libraries (cohttp cohttp-lwt-unix core lwt))))

(install
((section bin)
  (files ((main.exe as my_example_prog)))))

我正在运行jbuilder,如下所示。编译时我没有错误:

$ jbuilder build @install

我正在运行my_example_prog可执行文件,如下所示:

$ _build/install/default/bin/my_example_prog
Fatal error: exception (Failure "Ssl not available")

您可以找到我正在使用的完整OCaml项目here

0 个答案:

没有答案