Siv3Dで学ぶHTTP通信 #2 様々なデータをダウンロードする
Siv3Dで学ぶHTTP通信の2回目行ってみましょう!
まずは前回の復習です。Siv3DのHTTPClientクラスを用いることによってネット上のファイルをダウンロードすることができました。
前回はTexture型でやりましたが、他でも同様です。
数値や文字列をダウンロードする
画像ファイルや音楽ファイルではなく、数値や文字列をダウンロードしたいという時もあると思います。こういう場合では可読性が高く、そこそこ軽くて柔軟性があるJSONファイルを使用することが多いです。JSONファイルの書き方は調べればいろいろあると思いますが、例えばこんな感じのデータフォーマットです。
KeyとValueの組み合わせでできていて、さまざま言語やライブラリでサポートされています。もちろんSiv3DでもJSONReaderクラスを使用することで簡単に扱うことができます。
とりあえず、数値や文字列をダウンロードしたい時は、JSONファイルを用意しておけばいいということがわかっていただけたと思います。
複数ファイルをダウンロードする
DLCコンテンツとかだったらまず間違いなく複数のファイルが必要になってくると思います。何回もサーバーに対してリクエストするのも面倒ですし、通信するファイルの容量が小さいにこしたことはないので、ZIPファイルにしてからダウンロードします。
decode関数が返すByteArray型をファイルパスの代わりに渡すことでTexture型でもSound型でも使用することができます。
非同期ダウンロード
ZIPファイルあたりからさすがに重すぎて処理が止まるのが気になってきます。そういう時はdownloadAsync関数を使用します。この関数を使用すると関数を呼んだ時はリクエストのみ送り、ダウンロードはバックグラウンドで行ってくれます。retreiveProgress関数で得られるDownloadProgress型を通して、ダウンロードが完了したかどうかや、その進捗率がどれくらいなのかを受け取ることが可能です。
まとめ
今回で数値や文字列から複数ファイルのダウンロードとほとんどのデータのダウンロード方法がわかったと思います。
次回はバージョンアップの確認と実際に更新するところをやろうと思います。