我正在尝试将我的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()语句。
可能导致此问题的原因是什么?