Unity GET/POST请求

在Unity中进行简单的网络GET/POST请求使用现代的UnityWebRequest对象:
UnityEngine.Networking.UnityWebRequest

对象操作

常用操作如:

  • SetRequestHeader(string name, string value) - 设置请求头
  • SendWebRequest() - 开始请求
    设置数据接收Buffer(通常用于自定义请求)
    1
    2
    3
    4
    5
    var request = new UnityWebRequest(url, "POST");
    request.downloadHandler = new DownloadHandlerBuffer(); // 设置下载接收buffer

    var uploadData = Encoding.UTF8.GetBytes("Data string");
    request.uploadHandler = new UploadHandlerRaw(uploadData) // 设置数据负载,常用于POST请求

    若此处使用构造函数(如UnityWebRequest.Get(url)则不需要手动设置Buffer和数据负载,通常需要在构造函数内部填写其所需的数据等。

开始请求

请求函数SendWebRequest需要使用yield进行协程调用

1
2
3
4
5
6
7
8
9
public IEnumerator Get(url) {
var request = UnityWebRequest.Get(url);
yield return request.SendWebRequest();
if (request.result == UnityWebRequest.Result.Success) {
Debug.Log($"请求成功! 以下为请求内容:\n{request.downloadHandler.text}");
} else {
Debug.LogWarning($"请求出错!\n{request.error}");
}
}

在上述代码中,request.result中的result属性标定的当前请求是否成功以及失败的原因(若请求失败),具体条目可在IDE中查找UnityWebRequest.Result
获取请求得到的数据则是通过request.downloadHandler中的text字段获取。
若请求出现错误,则可以通过request.error来获取一段人类可读的请求错误原因字符串。