【发布时间】:2021-03-30 06:06:27
【问题描述】:
我对@987654325@ 有一些问题。
我有几个 URL 可以与我的服务器通信。 一些 URL 可以正常工作,而其他一些 URL 不能正常工作。
奇怪的是,任何统一和我的服务器都没有错误。我的服务器正常响应状态为 200,但 Unity 客户端无法从服务器接收任何数据。 (后来在控制台中显示统一编辑器 curl 错误 42 回调中止)所以我在 POSTMAN、Restlet Client、Curl 上测试了我的服务器,甚至在 javascript 上测试了 Axios。它运行良好。 我认为响应数据大小与这个问题无关,因为其他工作 URL 数据比响应数据大小大得多
我不知道为什么 UnityWebRequest 在某些 URL 响应中无法接收任何数据。
我使用 spring 框架和统一客户端版本的 web 服务器是 2019.2.12f1,我尝试了 2019.3.0.f1,但它也不起作用。
我认为服务器没有问题,因为服务器响应 200 并完成通信。
感谢您阅读我的问题,请给我一些解决此问题的建议。
更新:
这是我的请求代码
private IEnumerator SendPutRequest() {
var req = new UnityWebRequest("not/wokring/uri") {
downloadHandler = new DownloadHandlerBuffer(),
uploadHandler = new UploadHandlerRaw(Encoding.UTF8.GetBytes(requestBody)) {
contentType = "application/json"
}
};
req.SetRequestHeader("Authorization", "ACCESS TOKEN");
req.method = UnityWebRequest.kHttpVerbPUT;
yield return req.SendWebRequest();
Logger.Debug(this, req.downloadHandler.text);
}
更新2:
这里是测试调用其他 api (https://randomuser.me/api/)
private IEnumerator SendTestRequest() {
var req = new UnityWebRequest("https://randomuser.me/api/") {
downloadHandler = new DownloadHandlerBuffer()
};
req.method = UnityWebRequest.kHttpVerbGET;
yield return req.SendWebRequest();
Logger.Debug(this, req.downloadHandler.text);
}
工作正常Result
请求无效
这里是请求正文 json
[{'complex-data'}]
这里是代码
private IEnumerator SendBookResult() {
var req = new UnityWebRequest("http://not/wokring/uri") {
downloadHandler = new DownloadHandlerBuffer(),
uploadHandler = new UploadHandlerRaw(Encoding.UTF8.GetBytes(bookSolveBody)) {
contentType = "application/json"
}
};
req.SetRequestHeader("Authorization", Token);
req.method = UnityWebRequest.kHttpVerbPUT;
yield return req.SendWebRequest();
Logger.Debug(this, req.downloadHandler.text);
}
这里是响应服务器日志
2021-03-30 15:52:01.768 DEBUG [user-resource-service,141475988d7477c7,835066c63711dc29,true] 40897 --- [ctor-http-nio-4] o.s.w.s.adapter.HttpWebHandlerAdapter : [9651973a-15] Completed 200 OK
他们没有结果并得到错误enter image description here
和工作网址..
代码
private IEnumerator SendBookProblems() {
var req = new UnityWebRequest("http://wokring/uri") {downloadHandler = new DownloadHandlerBuffer()};
req.SetRequestHeader("Authorization", Token);
req.method = UnityWebRequest.kHttpVerbGET;
yield return req.SendWebRequest();
Debug.Log(req.downloadHandler.text);
}
结果有效
【问题讨论】:
-
你能在这里发布你的 UnityWebRequest 代码吗?以及您的网址,以便我们可以复制问题。
-
@ArtZolinaIII 更新请求代码,我在本地主机上使用我的服务器,所以你需要我的网址吗?当我更改 url 另一个 ex (a/b) 时也没有工作
-
这在你的本地主机之外的其他服务器上工作吗?
-
是的,即使是本地主机中的其他 URL 或其他服务器,它也是完美的工作代码,我将更新请求正文和邮递员结果
-
为什么不使用 UnityWebRequest.kHttpVerbGET?你想从服务器抓取数据吗?
标签: unity3d web unitywebrequest