2016-03-17 19 views
6

私は単純なものでなければならないことをしようとしています.GETリクエストをURLにします。しかし、私がこれを行う方法の例を検索すると、しばしばthisのようなぎこちなさに巻き込まれます。OCamlで簡単なGETリクエストを作成するにはどうすればよいですか?

OCamlを使用して簡単なHTTPリクエストを作成する方法を知っている人はいますか?私はOCamlの初心者でHaskellのいくつかのエキスパートです。

注:OCamlは理想的である可能な限り低いレベルを使用して

溶液。私はCohttpライブラリを使用しているのを見ましたが、私はネイティブ(?)HTTP OCamlのlibやそのような行にもっと興味があります。

@antronに対する応答では、可能な限り低いレベルのネイティブOCamlを使用するソリューションが高く評価されます。私はこれがUnixライブラリを含むと信じられるようになった。しかし、第三者図書館が関与していない別のソリューションがあれば、歓迎のようになります。

+0

Cohttpを推薦する私の答えにコメントとして、OCamlにそのようなライブラリはありません。 OCaml標準ライブラリは非常に煩雑で、多くのタスクでコミュニティライブラリを使用するのが一般的です。 OCamlでパッケージ化されたライブラリのリストを見たい場合は、ここにあります:http://caml.inria.fr/pub/docs/manual-ocaml/libref/index.html – antron

+0

"可能な限り低いレベル" OCamlでは、答えはソケット(例:標準モジュール 'Unix')になり、それはもはや*シンプル*ではありません。そのレベルを低くしたい場合は、質問を明確にしてください。 – antron

+1

スタックオーバーフローの開発者調査が示すように、誰もがこのような質問をdownvote、そのパンとバターは大部分の開発者をコーディングしています。 @dopatraman私はhttp://hyegar.com/2015/10/20/so-youre-learning-ocaml/を見て、すぐに生産性を上げることをお勧めします。 –

答えて

5

Cohttpライブラリを使用してください。 Client exampleを参照してください。

該当する行は次のようになります。

Cohttp_lwt_unix.Client.get (Uri.of_string "http://www.reddit.com/") 

これはあなたにLwtモナド内部(response, body)のペアを提供します。 responseは基本的にレコードであり、bodyはストリームです。残りの例は、それらのいくつかの興味深いビットを印刷しています。

+0

あなたは低レベルのコードでそれを行う方法を知っていますか? OCaml用の基本的な 'Http'ライブラリはありますか?私はこの言語を一から学ぶことを試みている。 – dopatraman

+3

Cohttpは、OCamlの基本的なHTTPライブラリの1つの候補です(あなたが投稿したリンクのように、Ocamlnetもあります)。下位レベルにしたい場合は、モジュール 'Unix'(または' Lwt_unix')からソケットを直接使用する必要があります。並行処理モナドを使用するには、並行処理モナドの別の選択肢はAsyncライブラリです。 OCaml自体が標準的なHTTPライブラリを提供しているわけではありませんが、コミュニティは現在Cohttpに多かれ少なかれ定着していると思います。 – antron

0

OCamlでの低レベルのUnixプログラミングについては(あまり気にかけなくても)、私は優れた本Unix System Programming in OCamlをお勧めします。それは、あなたが望むクライアントを書く方法を教えてくれるでしょう。

関連する問題