C++用のRESTクライアント restclient-cpp を試してみる
CやC++ででhttpリクエストを送りたい場合、libcurlが 使われる場合が多くありますが、 libcurlはC言語で書かれているため、普段C言語を触ってない自分としては ちょっと扱いづらいです。
そのため、C++で http リクエストを送信したい場合に、簡単に使えるライブラリを 探してみました。 見つかったのは以下のようなところ。
今回は、この中でも一番扱いが楽そうな mrtazz/restclient-cpp を使ってみました。
インストール
mrtazz/restclient-cpp では、ビルドに autoconfが使われているため、その作法に従ってビルドします。
$ git clone https://github.com/mrtazz/restclient-cpp $ cd restclient-cpp $ ./autogen.sh $ ./configure $ make $ make install
と実行することで、/usr/local/include, /usr/local/libにそれぞれヘッダファイルと、 ライブラリがインストールされます。 インストール先を変更する場合はconfigure時に--prefixをつけることで変更できるはず。
簡単なテスト
簡単に google のTOPページをGETしてくるプログラムを書いてみました。
ビルド時は、ライブラリを指定することを忘れずに。 また、C++11でコンパイルしています。
$ g++ -std=c++11 -lrestclient-cpp rest-client-test.cpp $ ./a.out
で、実行結果はこんな感じ。
# Code 302 # Header Alternate-Protocol:80:quic,p=0.02 Cache-Control:private Content-Length:261 Content-Type:text/html; charset=UTF-8 Date:Thu, 08 Jan 2015 01:03:23 GMT HTTP/1.1 302 Found:present Location:http://www.google.co.jp/?gfe_rd=cr&ei=W9etVOm-DoaK8AWj0YCoBA Server:GFE/2.0 # Body <HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8"> <TITLE>302 Moved</TITLE></HEAD><BODY> <H1>302 Moved</H1> The document has moved <A HREF="http://www.google.co.jp/?gfe_rd=cr&ei=W9etVOm-DoaK8AWj0YCoBA">here</A>. </BODY></HTML>
リダイレクトされている場合、自動でリダイレクト先をみるようにはなっていないので、 そこはハンドリングしないといけないみたい。
ただ、ソースを見ると、libcurlの薄いラッパーなだけなので、 もっと複雑なことをしたければ、libcurl使ったほうがいいかもしれませんね。
今度はこれを使ってクローラでも作ってみようかな〜