版本: Unity 6 (6000.0)
语言English
  • C#

UnityWebRequest.Post

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们确实阅读了用户提出的每个建议更改,并在适用的情况下进行更新。

关闭

提交失败

由于某些原因,您的建议更改无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

声明

public static Networking.UnityWebRequest Post(string uri, string postData, string contentType);

声明

public static Networking.UnityWebRequest Post(Uri uri, string postData, string contentType);

参数

uri 将字符串传输到的目标 URI。
postData 表单主体数据。将转换为 UTF-8 字符串。
contentType Content-Type 标头的值,例如 application/json。

返回值

UnityWebRequest 配置为通过 POST 将字符串发送到 uri 的 UnityWebRequest。

描述

创建一个 UnityWebRequest,该 Web 请求配置为通过 HTTP POST 将表单数据发送到服务器。

此方法创建一个 UnityWebRequest,将 url 设置为字符串 uri 参数,并将 method 设置为 POSTContent-Type 标头将设置为 contentType

此方法将 DownloadHandlerBuffer 附加到 UnityWebRequest。这很方便,因为我们预计大多数用户会使用 DownloadHandler 检查来自服务器的回复,尤其是在 REST API 的情况下。

postData 中的数据将通过 System.Text.Encoding.UTF8 解释为字节流。生成的字节流将存储在 UploadHandlerRaw 中,并且上传处理程序将附加到此 UnityWebRequest。

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

public class MyBehavior : MonoBehaviour { void Start() { StartCoroutine(Upload()); }

IEnumerator Upload() { using (UnityWebRequest www = UnityWebRequest.Post("https://www.my-server.com/myapi", "{ \"field1\": 1, \"field2\": 2 }", "application/json")) { yield return www.SendWebRequest();

if (www.result != UnityWebRequest.Result.Success) { Debug.LogError(www.error); } else { Debug.Log("Form upload complete!"); } } } }

声明

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

声明

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

参数

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

返回值

UnityWebRequest 配置为通过 POST 将表单数据发送到 uri 的 UnityWebRequest。

描述

创建 UnityWebRequest,该 Web 请求配置为通过 HTTP POST 将表单数据发送到服务器。

此方法创建一个 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");

using UnityWebRequest www = UnityWebRequest.Post("https://www.my-server.com/myform", form); yield return www.SendWebRequest();

if (www.result != UnityWebRequest.Result.Success) { Debug.LogError(www.error); } else { Debug.Log("Form upload complete!"); } } }

声明

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

声明

public static Networking.UnityWebRequest Post(Uri uri, List<IMultipartFormSection> multipartFormSections);

声明

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

声明

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

参数

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

返回值

UnityWebRequest 配置为通过 POST 将表单数据发送到 uri 的 UnityWebRequest。

描述

创建 UnityWebRequest,该 Web 请求配置为通过 HTTP POST 将表单数据发送到服务器。

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

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

此方法将 DownloadHandlerBuffer 附加到 UnityWebRequest。这很方便,因为我们预计大多数用户会使用 DownloadHandler 检查来自服务器的回复,尤其是在 REST API 的情况下。

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

使用 IMultipartFormSection

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

其他资源:MultipartFormDataSectionMultipartFormFileSection

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

多部分表单需要一个唯一的边界字符串来定义字段之间的分隔。必须保证边界字符串在请求中任何表单字段的主体中都不存在。如果您不提供边界,Unity 将生成一个。生成的边界是 40 个随机的可打印字节,实际上永远不会与表单字段数据冲突。但是,如果您的应用程序要求您提供自定义边界字符串,则可以这样做。

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

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

public class MyBehavior3 : MonoBehaviour { void Start() { StartCoroutine(Upload()); }

IEnumerator Upload() { List<IMultipartFormSection> form = new(); form.Add(new MultipartFormDataSection("myField", "myData"));

using UnityWebRequest www = UnityWebRequest.Post("https://httpbin.org/post", form); yield return www.SendWebRequest();

if (www.result != UnityWebRequest.Result.Success) { Debug.LogError(www.error); } else { Debug.Log("Form upload complete!"); } } }

声明

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

声明

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

参数

uri 将表单数据传输到的目标 URI。
formFields 指示表单字段的键和值的字符串。将自动格式化为 URL 编码的表单主体。

返回值

UnityWebRequest 配置为通过 POST 将表单数据发送到 uri 的 UnityWebRequest。

描述

创建 UnityWebRequest,该 Web 请求配置为通过 HTTP POST 将表单数据发送到服务器。

此方法创建一个 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 编码的表单字符串将转换为字节流并存储在 UploadHandlerRaw 中,该处理程序将附加到此 UnityWebRequest。

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

public class MyBehavior4 : MonoBehaviour { void Start() { StartCoroutine(Upload()); }

IEnumerator Upload() { Dictionary<string, string> form = new(); form["myField"] = "myData";

using UnityWebRequest www = UnityWebRequest.Post("https://httpbin.org/post", form); yield return www.SendWebRequest();

if (www.result != UnityWebRequest.Result.Success) { Debug.LogError(www.error); } else { Debug.Log("Form upload complete!"); } } }