Unity Web Request Sending Form
Send HTML form data to a server using the UnityWebRequest form APIs.
読み終わるまでの所要時間 5 分最終更新 1ヶ月前
HTML フォームとしてフォーマットされたデータをサーバーに送信するために、2 つの主要な機能があります。WWW システムから移行する場合は、後述の WWWForm の使用を参照してください。
IMultipartFormSection の使用
フォームデータ指定をどのように指定するかをより細かく制御するために、 システムにはユーザーが実装可能な インターフェースが含まれています。標準的なアプリケーションに対して、Unity はデータセクションとファイルセクションのデフォルトの実装を行う と を利用できます。
UnityWebRequestIMultipartFormSectionMultipartFormDataSectionMultipartFormFileSection多重定義である のは、2 番目のパラメーターとして、List 引数を受け取ります。この引数の要素はすべて でなければなりません。関数のシグネチャは以下のようになります。
UnityWebRequest.POSTIMultipartFormSectionsUnityWebRequest.Post(string url, List<IMultipartFormSection> formSections);
詳細
- この関数は を作成し、ターゲット URL を 1 番目の文字列のパラメーターに設定します。また、
UnityWebRequestの Content-Type ヘッダーをUnityWebRequestオブジェクトのリストで指定されたフォームデータ用に、適切に設定します。IMultipartFormSection - この関数は、デフォルトで を
DownloadHandlerBufferにアタッチします。これは便宜上のもので、これを利用してサーバーの応答を確認することができます。UnityWebRequest - 関数と同様に、この HLAPI 関数は、提供された
WWWForm POSTを順番に呼び出し、それらを RFC 2616 で指定されている標準マルチパート形式にフォーマットします。IMultipartFormSection - 事前にフォーマットされたフォームデータは、標準の オブジェクトに格納され、
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);
詳細
- この関数は新しい を作成し、ターゲット URL を 1 番目の文字列引数に設定します。また、
UnityWebRequest引数 (Content-Type など) で生成されたカスタムヘッダーを読み込み、WWWFormにコピーします。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!"); } }}