モバイルデバイスでのネットワーク Tips
UnityWebRequest-HLAPI

UnityWebRequest

UnityWebRequest は、Unity の WWW クラスをリプレースしたものです。HTTP リクエストを構成し、HTTP レスポンスを処理するためのモジュラーシステムを提供します。UnityWebRequest システムの最重要目標は、Unityゲームと最新の Webバックエンドとの相互作用を可能にすることです。次のような(chunked HTTP レスポンス、POST/PUT 操作のストリーミング、HTTP ヘッダや動詞(GET、POST、PUT、DELETE)を完全に制御するなど)高い需要がある機能にも対応します。

システムは 2レイヤー (層) から構成されています。

  • High-Level API (HLAPI) は Low-level API の機能をラップし、よくある操作を実行するのに便利なインターフェースを提供しています。
  • Low-Level API (LLAPI) は、より上級レベルのユーザーのために最大のフレキシビリティを提供しています。

これらのレイヤーに関しては後出の以下のセクションを参照してください。

サポートされているプラットフォーム

UnityWebRequest システムは、ほとんどの Unity プラットフォームに対応しています。

  • Editor & Standalone プレイヤーの全バージョン
  • WebGL
  • モバイルプラットフォーム: iOS、Android、Windows Phone 8
  • Windows ストア アプリ
  • PS3
  • Xbox 360

アーキテクチャ

UnityWebRequest のエコシステムは 3つの Distinct 操作に HTTP トランザクションを分けます。

  • サーバーにデータを送信する
  • サーバーからのデータを受信する
  • HTTP フロー制御(リダイレクト、エラー処理、他)

上級レベルのユーザーによりよいインターフェースを提供するために、これらの操作はそれぞれ個々のオブジェクトによって制御されています。

  • UploadHandler のオブジェクトは、サーバーへのデータ転送処理を行います。
  • DownloadHandler のオブジェクトは、サーバーからのデータ受信、受信したデータのバッファリングや後処理を行います。
  • UnityWebRequest オブジェクトは、他の2つのオブジェクトを管理し、さらに HTTP フロー制御に関する処理を扱います。このオブジェクトによってヘッダ情報(custom header)や URL が定義され、エラーとリダイレクトの情報が格納されます。

指定された HTTP トランザクションに関する通常のコードフローは以下のとおりです。

  • Web Request のオブジェクトを作成
  • Web Request のオブジェクトを設定
    • カスタムヘッダの設定
    • HTTP 動詞 (GET、POST、HEAD など。Android を除くすべてのプラットフォームでカスタムの動詞が使用可能です) の設定
    • URL を設定 *(オプション)Download Handler を作成 & Web Request にアタッチ
    • アップロードするデータを指定
    • HTTP フォームをアップロード
  • (オプション) Download Handler を作成 & Web Request にアタッチ
  • Web Request を送信
    • コルーチンの場合、リクエストされている処理が完了するまで待機させるため Send() メソッドをyield する場合があります。 (オプション)Download Handler から受信データを読み取る (オプション)UnityWebRequest オブジェクトからエラー情報、HTTP ステータスコードやレスポンス情報を読み取る
モバイルデバイスでのネットワーク Tips
UnityWebRequest-HLAPI