发送数据到格式的HTML表单有两个主要函数。如果您是从WWW系统中迁移过来的,请参阅下面的使用WWWForm。
为了提供更精细的控制表单数据,UnityWebRequest系统中包含了一个用户可实现的IMultipartFormSection接口。对于标准应用,Unity还提供了数据部分和文件部分的默认实现:MultipartFormDataSection
和MultipartFormFileSection
。
UnityWebRequest.POST
的重载接受一个List参数,该参数的成员必须是IMultipartFormSections。函数签名如下:
UnityWebRequest.Post(string url, List<IMultipartFormSection> formSections);
DownloadHandlerBuffer
附加到UnityWebRequest上。这只是为了方便 - 您可以使用它来检查服务器的回复。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()
{
List<IMultipartFormSection> formData = new List<IMultipartFormSection>();
formData.Add(new MultipartFormDataSection("field1=foo&field2=bar"));
formData.Add(new MultipartFormFileSection("my file data", "myfile.txt"));
UnityWebRequest 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!");
}
}
}
为了帮助从WWW系统中迁移过来,UnityWebRequest系统允许您使用旧的WWWForm对象来提供表单数据。
在这种情况下,函数签名如下:
UnityWebRequest.Post(string url, WWWForm formData);
DownloadHandlerBuffer
附加到UnityWebRequest上。这只是为了方便 - 您可以使用它来检查服务器的回复。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");
UnityWebRequest 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!");
}
}
}