Version: 2022.1
public static Networking.UnityWebRequest Post (string uri, string postData);

参数

uri 要向其传输表单数据的目标 URI。
postData 表单主体数据。将在传输之前进行 URL 编码。

返回

UnityWebRequest 经配置可通过 POSTuri 发送表单数据的 UnityWebRequest。

描述

创建一个经配置可通过 HTTP POST 向服务器发送表单数据的 UnityWebRequest。

此方法可创建一个 UnityWebRequest,将 url 设置为字符串 uri 参数,并将 method 设置为 POSTContent-Type 标头将默认被设置为 application/x-www-form-urlencoded

注意: 许多服务器后端语言无法正确处理带有 Content-Type 标头的 POST 请求,设置为对 application/x-www-form-urlencodedmultipart/form-data 之外的其他标头进行编码。

此方法将一个 DownloadHandlerBuffer 附加到 UnityWebRequest。这是为方便起见,因为我们预计大部分用户将使用 DownloadHandler 检查服务器的回复,尤其是对于 REST API 来说。

The data in postData will be escaped, then interpreted into a byte stream via System.Text.Encoding.UTF8. The resulting byte stream will be stored in an UploadHandlerRaw and the Upload Handler will be attached to this 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 (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!"); } } } }

public static Networking.UnityWebRequest Post (string uri, WWWForm formData);

参数

uri 要向其传输表单数据的目标 URI。
formData 封装在 WWWForm 对象中的表单字段或文件,用于格式化并传输到远程服务器。

返回

UnityWebRequest 经配置可通过 POSTuri 发送表单数据的 UnityWebRequest。

描述

创建一个经配置可通过 HTTP POST 向服务器发送表单数据的 UnityWebRequest。

此方法可创建一个 UnityWebRequest,将 url 设置为字符串 uri 参数,并将 method 设置为 POSTContent-Type 标头将从 formData 参数中复制。

此方法将一个 DownloadHandlerBuffer 附加到 UnityWebRequest。这是为方便起见,因为我们预计大部分用户将使用 DownloadHandler 检查服务器的回复,尤其是对于 REST API 来说。

formData 对象将根据其内容生成适当格式化的字节流。生成的字节流将存储在 UploadHandlerRaw 中,且上传处理程序将附加到此 UnityWebRequest。

using UnityEngine;
using UnityEngine.Networking;
using System.Collections;

public class MyBehavior2 : 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!"); } } }

public static Networking.UnityWebRequest Post (string uri, List<IMultipartFormSection> multipartFormSections);
public static Networking.UnityWebRequest Post (string uri, List<IMultipartFormSection> multipartFormSections, byte[] boundary);

参数

uri 要向其传输表单数据的目标 URI。
multipartFormSections 要进行格式化并传输到远程服务器的表单字段或文件的列表。
boundary 唯一边界字符串,将在多部分表单中分隔表单字段时使用。如果未提供,系统将为您生成边界。

返回

UnityWebRequest 经配置可通过 POSTuri 发送表单数据的 UnityWebRequest。

描述

创建一个经配置可通过 HTTP POST 向服务器发送表单数据的 UnityWebRequest。

此方法可创建一个 UnityWebRequest,将 url 设置为字符串 uri 参数,并将 method 设置为 POSTContent-Type 标头将默认被设置为 multipart/form-data,并带有适当的边界规范。

如果您提供自定义的 boundary 字节数组,请注意必须保证字节序列是唯一的且不能出现在表单数据主体中的任何位置。有关多部分表单和表单边界的更多信息,请参阅 RFC 2388

此方法将一个 DownloadHandlerBuffer 附加到 UnityWebRequest。这是为方便起见,因为我们预计大部分用户将使用 DownloadHandler 检查服务器的回复,尤其是对于 REST API 来说。

multipartFormSections 中的 IMultipartFormSection 对象列表将被格式化为一个有效的多部分表单主体。每个对象都将被解释为一个离散的表单部分。格式化此多部分表单主体所生成的字节流将存储在 UploadHandlerRaw 中并附加到此 UnityWebRequest。

使用 IMultipartFormSection

为了让您更好地控制您指定表单数据的方式,UnityWebReques 系统包含了一个可由用户实现的 IMultipartFormSection 界面。对于标准应用程序,Unity 还提供了数据和文件部分的默认实现。

另请参阅:MultipartFormDataSectionMultipartFormFileSection

可为此方法提供一个 IMultipartFormSection 对象列表。列表成员将被格式化为一个多部分表单,由 RFC 2388 定义。

多部分表单需要唯一边界字符串来定义字段之间的分隔。必须保证边界字符串未出现在请求中任何表单字段主体中的任何位置。如果您未提供边界,Unity 将生成一个边界。生成的边界是 40 个随机可打印字节,可有效避免与表单字段数据发生冲突。但是,如果您的应用程序需要您提供自定义边界字符串,您可能需要进行自定义。

提供的边界(如果有)将自动从字节数组转换为 UTF8 字符。

using UnityEngine;
using UnityEngine.Networking;
using System.Collections;

public class MyBehavior3 : 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!"); } } }

public static Networking.UnityWebRequest Post (string uri, Dictionary<string,string> formFields);

参数

uri 要向其传输表单数据的目标 URI。
formFields 用于表示表单字段的键和值的字符串。将自动格式化为经过 URL 编码的表单主体。

返回

UnityWebRequest 经配置可通过 POSTuri 发送表单数据的 UnityWebRequest。

描述

创建一个经配置可通过 HTTP POST 向服务器发送表单数据的 UnityWebRequest。

此方法可创建一个 UnityWebRequest,将 url 设置为字符串 uri 参数,并将 method 设置为 POSTContent-Type 标头将被设置为 application/x-www-form-urlencoded

formFields 中的字符串字典将被解释为一个表单字段列表,其字段 ID 是字典键,其字段值为字典值。键和值都将进行转义,然后加入到经过 URL 编码的表单字符串。(例如,key1=value1&key2=value2)。

此方法默认将一个 DownloadHandlerBuffer 附加到 UnityWebRequest。这是为方便起见,因为我们预计大部分用户将使用 DownloadHandler 检查服务器的回复,尤其是对于 REST API 来说。

formFields 生成的经过 URL 编码的表单字符串将被转换为字节流,并存储在一个将附加到此 UnityWebRequest 的 UploadHandlerRaw 中。

using UnityEngine;
using UnityEngine.Networking;
using System.Collections;

public class MyBehavior4 : 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!"); } } }