UnityWebRequest.downloadHandler.text为空,尽管POST方法返回响应
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UnityWebRequest.downloadHandler.text为空,尽管POST方法返回响应相关的知识,希望对你有一定的参考价值。
- 我正在使用UnityWebRequest对我的服务器进行POST api调用(我拥有的Unity版本是2017.4.0f1)
- 我正在请求体中的一些数据元素发送到服务器,它插入我的数据库并返回一个响应体,这是一个json字符串
- 我正在使用UnityWebRequest.downloadhandler.text来读取响应消息,但它是空的,尽管数据元素已插入到我的数据库中。 request.downloadHandler.data.Length也给了我0
- 通过Postman进行相同的调用会返回相应的响应(使用HTTPWebRequest并通过流读取器读取响应也是如此)
这是我拥有的代码片段:
UnityWebRequest request=new UnityWebRequest(endpoint,"POST");
request.SetRequestHeader("Content-Type","application/json");
request.SetRequestHeader("host",host);
request.SetRequestHeader("X-Amz-Date",dateTime);
request.SetRequestHeader("Authorization",authorizationHeader);
request.uploadHandler=(UploadHandler)new
UploadHandlerRaw(Encoding.UTF8.GetBytes(requestParameter));
request.chunkedTransfer=false;
request.downloadHandler=new DownloadHandlerBuffer();
request.SendWebRequest();
print(request.downloadHandler.text);
请告知我在这里做错了什么.....
答案
您需要等待结果下载,然后才能对其执行任何操作。 Webrequests是异步的!
通常,您可以使用Coroutine来执行此操作,例如
public IEnumerator LoadData()
{
// ......
// all your code goes here, up to the SendWebRequest line
// then you yield to wait for the request to return
yield return request.SendWebRequest();
// after this, you will have a result
print(request.downloadHandler.text);
}
像这样开始这个协程:
StartCoroutine(LoadData());
回答这个问题的更多例子:Sending http requests in C# with Unity
以上是关于UnityWebRequest.downloadHandler.text为空,尽管POST方法返回响应的主要内容,如果未能解决你的问题,请参考以下文章