C++/CX でHTTPサーバーと JSON を送受したい

以前の C++/CX 小ネタ に続く C++/CX の話題です。
HTTPサーバーに JSON データを送って、何か JSON データが返ってくるまでを記述した例になります。

コード例

auto url = ref new Uri("https://hoge.localhost.net/api/foo/");
auto http_client = ref new Windows::Web::Http::HttpClient();
auto content = ref new Windows::Web::Http::HttpStringContent(
	ref new String(json.c_str()),
	Windows::Storage::Streams::UnicodeEncoding::Utf8,
  "application/json"
);

auto response = create_task(
	[&]() { auto task = create_task(http_client->PostAsync(url, content)); task.wait(); return task.get(); }
).then(
	[&](task args) {
    auto task = create_task(args.get()->Content->ReadAsStringAsync()); task.wait(); return task.get();
  }
);
response.wait();
auto body = response.get();
body->Data(); // Response JSON

通信なので非同期処理で記述しています。
create_task 関数は処理の継続を、 then で続けて記述できるので便利でした。
このコード例では、 json の文字列が UTF-8 エンコードされたものとして送っています。

あとは、JSON データをどう作るか、デコードするかですが、これには json を扱うライブラリは多種あるのでそれらにお任せです。
手元では picojson を入れてみましたが、 C++/CX の環境でも問題なく動作しているようです。

C++/CXプログラミング
すらりんをフォローする
すらりん日記

コメント

タイトルとURLをコピーしました