# ウェブサーバーとの相互作用

> Use the UnityWebRequest system to allow your application to interact with a web server via HTTP.

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

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

* [High-Level API](/engine/6000.0/manual/scripting/object-oriented-development/web-request/hlapi.md) (HLAPI) は Low-level API の機能をラップし、よくある操作を実行するのに便利なインターフェースを提供しています。
* [Low-Level API](/engine/6000.0/manual/scripting/object-oriented-development/web-request/llapi.md) (LLAPI) は、より上級レベルのユーザーのために高い柔軟性を提供しています。

## サポートされているプラットフォーム##additional-resources

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

* Unity エディターとスタンドアロンプレイヤーの全バージョン
* Web
* モバイルプラットフォーム: iOS, Android
* ユニバーサル Windows プラットフォーム

## アーキテクチャ

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

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

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

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


**Frame:**
![](/api/media?file=/engine/6000.0/media/images/UnityWebRequestArchitecture.png)

指定された 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 ステータスコードやレスポンス情報を読み取る
