Version: 2017.1
モバイルデバイスでのネットワーク Tips
共通操作 - HLAPI の使用

UnityWebRequest

UnityWebRequest は、HTTP のリクエストとレスポンスを構成するモジュラーシステムを提供します。UnityWebRequest システムの主要な役割は、Unity ゲームが Web ブラウザのバックエンドとの相互作用を可能にすることです。チャンクになった HTTP リクエスト、POST/PUT 操作のストリーミング、HTTP ヘッダや動詞(GET、POST、PUT、DELETE)の完全な制御など需要の高い機能にも対応します。

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

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

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

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

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

  • Unity エディターとスタンドアロンプレイヤーの全バージョン
  • WebGL
  • Mobile platforms: iOS, Android
  • Universal Windows Platform
  • 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 を設定
  • (オプション) Upload Handler を作成しWeb Request にアタッチ
    • アップロードするデータを指定
    • HTTP フォームをアップロード
  • (オプション) Download Handler を作成しWeb Request にアタッチ
  • Web Request を送信
    • コルーチンの場合、Send() コールの結果を Yield し、リクエストが完了するのを待つこともできます (オプション)Download Handler から受信データを読み取る (オプション)UnityWebRequest オブジェクトからエラー情報、HTTP ステータスコードやレスポンス情報を読み取る

モバイルデバイスでのネットワーク Tips
共通操作 - HLAPI の使用