使用 JSON& xAPI 的 Unity C# webRequest

Unity C# webRequest with JSON& xAPI

我在 Unity 中使用 c# 和 UnityWebRequest 实现了一篇 xAPI 测试文章,运行 遇到了一个我似乎无法解决的问题。

当我 Post 到 http://httpbin.org/post 时,我的调用按预期运行并且服务器收到的 JSON 数据也完全符合预期。

当我将端点更改为 https://lrs.adlnet.gov/xapi/(xAPI 语句查看器)时,我调用 return 200 |好的,但不要出现。我已验证端点、身份验证和 JSON 是否合适。 (相同的数据使用 xAPI stringbuilder 以及我自己的 HTML/Javascript 测试文章发送正常。

当我将端点更改为我的 SCORM 云 LRS 端点时,我收到错误 400 | Unknown/Generic HTTP 错误,但没有其他帮助。

Post方法

public static IEnumerator IPostLRSData(string jsonData, string authKey, string endpoint, Action<string> callback = null) {
        UnityWebRequest request = new UnityWebRequest(endpoint, UnityWebRequest.kHttpVerbPOST);
        //byte[] bodyRaw = new UTF8Encoding().GetBytes(jsonData);
        //byte[] bodyRaw = new ASCIIEncoding().GetBytes(jsonData);
        byte[] bodyRaw = System.Text.Encoding.UTF8.GetBytes(jsonData);

        request.uploadHandler = (UploadHandler)new UploadHandlerRaw(bodyRaw);
        request.downloadHandler = (DownloadHandler)new DownloadHandlerBuffer();

        request.SetRequestHeader("Authorization", authKey);
        request.SetRequestHeader("X-Experience-API-Version", xAPIUtils.XAPI_VERSION);
        request.SetRequestHeader("Content-Type", "application/json");

        yield return request.Send();

        if(request.isNetworkError || request.isHttpError) {
            Debug.LogWarning(request.error);
        } else {
        // Show results as text
            Debug.LogWarning(request.downloadHandler.text);
        }

        callback(request.responseCode + " | " + request.error);
    }

作为疯狂的最后一次尝试,我移植了一个 github 线程 WebRequest 示例并将其定制到我的项目中,我得到了与上面类似的结果,除了它在最后 2 个端点上保持沉默。即使在调试模式下。

根据您作为 "endpoint" 提供的内容,您似乎需要附加您请求的资源,在您的情况下是 /statements。考虑使用 TinCan.NET 作为一个库,或者至少看看它的实现,因为它是 OSS。 http://rusticisoftware.github.io/TinCan.NET/