0

我有一些问题UnityWebRequest

我有几个 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);
        }

并且工作正常结果

并且不工作的请求

这是请求正文 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

他们没有结果并得到错误在此处输入图像描述

和工作网址..

代码

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);
}

结果有效

结果

4

1 回答 1

0

最后,我找到了解决问题的方法。

只需在创建统一 Web 请求实例后添加这些代码

req.chunkedTransfer = false;
req.useHttpContinue = false;

我不知道为什么添加这些代码后它会起作用。

但是,我发现可以按预期工作。

于 2021-04-01T03:44:49.473 回答