unity c# httppost 带参数(json)请求,返回json 并且解析,超时设置 完整的例子5s
时间: 2024-09-08 22:02:42 浏览: 101
在Unity C#中,使用`WWWForm`配合`UnityWebRequest`发送HTTP POST请求,包括带参数(JSON)的方式,并处理超时及返回的JSON数据,你可以这样做:
```csharp
using System.Collections;
using UnityEngine;
using System.IO;
using UnityEngine.Networking;
public class HTTPRequestExample : MonoBehaviour
{
public string apiUrl = "http://example.com/api";
private const float timeoutSeconds = 5f; // 设置超时时间为5秒
void Start()
{
StartCoroutine(DoPostRequest());
}
IEnumerator DoPostRequest()
{
UnityWebRequest www = UnityWebRequest.Post(apiUrl, UnityWebRequestHttpMethod.Post);
www.timeoutInterval = timeoutSeconds; // 设置超时时间
WWWForm form = new WWWForm();
Dictionary<string, string> jsonParams = new Dictionary<string, string>
{
{ "key1", "value1" },
{ "key2", "value2" } // 添加你的JSON参数
};
foreach (KeyValuePair<string, string> param in jsonParams)
{
form.Add(param.Key, param.Value);
}
www.form = form;
yield return www.SendWebRequest();
if (www.isNetworkError || www.isHttpError) // 检查请求是否失败
{
Debug.LogError("Request failed: " + www.error);
}
else if (www.downloadHandler.text != null) // 如果成功获取了响应
{
dynamic responseObject = JsonConvert.DeserializeObject(www.downloadHandler.text); // 解析JSON
Debug.Log("Response JSON: " + responseObject.ToString());
}
}
}
```
在这个例子中,我们首先创建了一个`UnityWebRequest`实例并设置了超时时间。然后创建了一个`WWWForm`,添加了JSON参数,将它设置给`UnityWebRequest`。接着发起POST请求,并在异步操作完成后检查结果。
注意:为了解析JSON,你需要引用`Newtonsoft.Json`库,可以使用NuGet包管理器安装。此外,在实际项目中,最好处理网络错误和异常情况,这里仅做示例展示。
阅读全文