ドキュメント

Unity Engine

Unity Engine

Unity Web Request Sending Form

Send HTML form data to a server using the UnityWebRequest form APIs.
読み終わるまでの所要時間 5 分最終更新 1ヶ月前

HTML フォームとしてフォーマットされたデータをサーバーに送信するために、2 つの主要な機能があります。WWW システムから移行する場合は、後述の WWWForm の使用を参照してください。

IMultipartFormSection の使用

フォームデータ指定をどのように指定するかをより細かく制御するために、
UnityWebRequest
システムにはユーザーが実装可能な
IMultipartFormSection
インターフェースが含まれています。標準的なアプリケーションに対して、Unity はデータセクションとファイルセクションのデフォルトの実装を行う
MultipartFormDataSection
と
MultipartFormFileSection
を利用できます。
多重定義である
UnityWebRequest.POST
のは、2 番目のパラメーターとして、List 引数を受け取ります。この引数の要素はすべて
IMultipartFormSections
でなければなりません。関数のシグネチャは以下のようになります。
UnityWebRequest.Post(string url, List<IMultipartFormSection> formSections);

詳細

  • この関数は
    UnityWebRequest
    を作成し、ターゲット URL を 1 番目の文字列のパラメーターに設定します。また、
    UnityWebRequest
    の Content-Type ヘッダーを
    IMultipartFormSection
    オブジェクトのリストで指定されたフォームデータ用に、適切に設定します。
  • この関数は、デフォルトで
    DownloadHandlerBuffer
    を
    UnityWebRequest
    にアタッチします。これは便宜上のもので、これを利用してサーバーの応答を確認することができます。
  • WWWForm POST
    関数と同様に、この HLAPI 関数は、提供された
    IMultipartFormSection
    を順番に呼び出し、それらを RFC 2616 で指定されている標準マルチパート形式にフォーマットします。
  • 事前にフォーマットされたフォームデータは、標準の
    UploadHandlerRaw
    オブジェクトに格納され、
    UnityWebRequest
    にアタッチされます。その結果、
    UnityWebRequest.POST
    の呼び出し後に実行された
    IMultipartFormSection
    オブジェクトへの変更は、サーバーに送信されるデータには反映されません。

例

using UnityEngine;using UnityEngine.Networking;using System.Collections;using System.Collections.Generic;public class MyBehavior : MonoBehaviour{ void Start() { StartCoroutine(Upload()); } IEnumerator Upload() { var formData = new List<IMultipartFormSection>(); formData.Add(new MultipartFormDataSection("field1=foo&field2=bar")); formData.Add(new MultipartFormFileSection("my file data", "myfile.txt")); using var www = UnityWebRequest.Post("https://www.my-server.com/myform", formData); yield return www.SendWebRequest(); if (www.result != UnityWebRequest.Result.Success) { Debug.Log(www.error); } else { Debug.Log("Form upload complete!"); } }}
WWWForm の使用 (古い関数)
WWW システムから移行するために、UnityWebRequest システムでは古い WWWForm オブジェクトを使用してフォームデータを渡すことが可能です。
この場合、関数のシグネチャは以下のようになります。
UnityWebRequest.Post(string url, WWWForm formData);

詳細

  • この関数は新しい
    UnityWebRequest
    を作成し、ターゲット URL を 1 番目の文字列引数に設定します。また、
    WWWForm
    引数 (Content-Type など) で生成されたカスタムヘッダーを読み込み、
    UnityWebRequest
    にコピーします。
  • この関数は、デフォルトで
    DownloadHandlerBuffer
    を
    UnityWebRequest
    にアタッチします。これは便宜上のもので、これを利用してサーバーの応答を確認することができます。
  • この関数は
    WWWForm object
    によって生成された生データを読み込み、
    UploadHandlerRaw
    オブジェクトにバッファリングします。そして、これが
    UnityWebRequest
    にアタッチされます。そのため、
    UnityWebRequest.POST
    を呼び出した後に
    WWWForm
    オブジェクトを変更しても、
    UnityWebRequest
    の内容は変更されません。

例

using UnityEngine;using UnityEngine.Networking;using System.Collections; public class MyBehavior : MonoBehaviour { void Start() { StartCoroutine(Upload()); } IEnumerator Upload() { WWWForm form = new WWWForm(); form.AddField("myField", "myData"); using var www = UnityWebRequest.Post("https://www.my-server.com/myform", form); yield return www.SendWebRequest(); if (www.result != UnityWebRequest.Result.Success) { Debug.Log(www.error); } else { Debug.Log("Form upload complete!"); } }}