使用UnityWebRequest将(POST)JSON对象发送到RESTful API

时间:2016-10-12 03:22:52

标签: javascript c# rest unity3d

我正在尝试将我的Unity应用程序连接到我使用Javascript和MySQL编写的RESTful API。目前我遇到了调用我的一个API端点的统一代码的问题 - 看起来Unity代码根本没有连接到服务器。

以下是供参考的服务器端点:

app.post("/api/users/authenticate/", function(req, res) {

    var queryString = `SELECT UserID, Password FROM UserAccount WHERE UserName = ?`;

    console.log("test");
    console.log(req.body.UserName);
    console.log(req.body.Password);

    connection.query(queryString, [req.body.UserName], function(err, resp) {

        if (!resp[0]) {
            res.send("ER_INCORRECT_USERNAME");
        } else {

            var string = JSON.stringify(resp);
            var jsonResp = JSON.parse(string);

            if (jsonResp[0].Password == req.body.Password) {
                res.send(jsonResp[0].UserID.toString());
            } else {
                res.send("FAILURE_AUTHENTICATED");
            }
        }
    });
    connection.end;
});

您可以看到此端点只是检查提供的参数是否与存储在MySQL数据库中的参数相同,以便验证玩家帐户。记下console.log语句。

以下是我尝试用于POST到此端点的统一代码:

public static class PlayerAccountsInterface
    {
         public static IEnumerator AuthenticatePlayer(String username, String password)
        {
            List<IMultipartFormSection> form = new List<IMultipartFormSection>();
            form.Add(new MultipartFormDataSection("UserName", username));
            form.Add(new MultipartFormDataSection("Password", password));

            UnityWebRequest request = UnityWebRequest.Post(InterfaceTools.GetAccountsUrl("authenticate"), form);
            request.SetRequestHeader("Accept", "application/json");
            yield return request.Send();
        }   
    }

InterfaceTools.GetAccountsUrl函数只获取服务器端点的IP地址和URL。这部分绝对正确。服务器端点也是正确的,因为我使用POSTman独立测试它。

当我运行统一代码时,不会对服务器端点进行调用。我知道这是因为没有触发三个console.log()语句。

可能导致此问题的原因是什么?

0 个答案:

没有答案