我正在使用带有UnityWebRequest的c#在Unity中实现xAPI测试文章,并遇到了一个我似乎无法解决的问题。
当我发布到http://httpbin.org/post我的调用按预期运行时,服务器收到的JSON数据也完全符合预期。
当我将端点更改为https://lrs.adlnet.gov/xapi/(xAPI语句查看器)时,我的调用返回200 |好的,但不要出现。我已经验证了端点,身份验证和JSON是否合适。 (使用xAPI stringbuilder以及我自己的HTML / Javascript测试文章,相同的数据发送正常。
当我将端点更改为我的SCORM云LRS端点时,我收到错误400 |未知/通用HTTP错误,但没有其他任何有用的。
的PostMethod
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个端点沉默。即使在调试模式下也是如此。
答案 0 :(得分:1)
根据您提供的&#34;端点&#34;看起来您需要附加您请求的资源,在您的情况下它将是/statements
。考虑使用TinCan.NET作为库,或者至少查看它的实现,因为它是OSS。 http://rusticisoftware.github.io/TinCan.NET/