本章介绍Unity请求的表单请求,以键值对形式的字典来表示字段与其对应的值,为了方便通用,可以将回调作为函数形参,可在外部调用回调编写独立逻辑。
这里以一个登录接口为例,直接上代码:
using System;
using UnityEngine;
using System.Collections;
using UnityEngine.Networking;
using System.Collections.Generic;
public class Test : MonoBehaviour
{
private void Start()
{
Dictionary<string, string> formDic = new Dictionary<string, string>();
formDic.Add("userName", "admin");
formDic.Add("password", "123456");
StartCoroutine(UnityWebRequestPost("http://192.168.0.1:8080/port/login", formDic, text =>
{
Debug.Log("请求结果:" + text);
}));
}
/// <summary>
/// UnityWebRequest Post 表单请求
/// </summary>
/// <param name="url">接口地址</param>
/// <param name="fromDic">form字典</param>
/// <param name="textCallBack">text回调</param>
/// <returns></returns>
IEnumerator UnityWebRequestPost(string url, Dictionary<string, string> fromDic, Action<string> textCallBack)
{
WWWForm form = new WWWForm();
foreach (var item in fromDic)
{
form.AddField(item.Key, item.Value);
}
UnityWebRequest request = UnityWebRequest.Post(url, form);
request.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded");
yield return request.SendWebRequest();
if (request.isHttpError || request.isNetworkError)
{
Debug.LogError(request.error);
}
else
{
string result = request.downloadHandler.text;
textCallBack?.Invoke(result);
}
}
}
这里需要注意的是,字典的键为字段,值为字段的值,键必须要与接口需要上传字段名称一致,并且区分大小写,各位同学可以让公司后台编写一个简单的登录接口,传入接口地址、键值字典,即可获取Post请求结果。