构建一个与PHP / MySQL后端通信的Unity前端应用。现在,我正在处理它的注册和登录部分。在Unity编辑器中,所有功能均正常运行,在浏览器前端注册也正常。但是,一旦我在Unity中使用正常工作的版本并将其构建以在我的Google Pixel手机上进行测试,我的手机上的注册和登录都会失败。我登录时收到的错误消息是“服务器解析响应错误,请重试!”在我的UILogin.cs中。然而,没有其他附加条件。我尝试遵循Unity文档中的调试,adb和DDMS进行访问,以了解正在发生的事情,但是在所有这些尝试中我都失败了。 Android和WWW对象或Web通信是否有特别不同的地方?这是我的UILogin.cs的一部分,还将包括Login.php。
UILogin.cs
IEnumerator AttemptLogin(bool quickLogin)
{
CreateLoadingScreen();
DeactivateForm();
WWWForm form = new WWWForm();
form.AddField("email", Email.text);
form.AddField("password", Password.text);
WWW www = new WWW(URL.GetLoginURL, form);
yield return www;
DestroyLoadingScreen();
ActivateForm();
ParseResult(www.text, quickLogin);
}
void ParseResult(string result, bool quickLogin)
{
byte resultCode;
if (!byte.TryParse(result, out resultCode))
Result.text = "Error parsing response from server, please try again!";
else if (resultCode == 0)
{
if (RememberToggle.isOn && !quickLogin) // Remember me
{
PlayerPrefs.SetInt("remember", 1);
PlayerPrefs.SetString("email", Email.text);
PlayerPrefs.SetString("password", Password.text);
}
else if (!quickLogin)
{
TemporaryAccount.Email = Email.text;
TemporaryAccount.Password = Password.text;
}
SceneManager.LoadScene(3);
}
else // Failure
{
if (quickLogin)
ShowForm();
Result.text = WebError.GetLoginError(resultCode);
}
}
Login.php
<?php
require "conn.php";
$stmt = $pdo->prepare("SELECT * FROM account WHERE email=:email");
$stmt->bindParam(":email", $_POST['email']);
$stmt->execute();
$count = $stmt->rowCount(); // gets count of records found
if($count > 0) {
$result = $stmt->fetch(); // gets resultset
if(!password_verify($_POST['password'], $result[4]))
echo "2";
else
echo "0";
}
else {
echo "1";
}
?>
有什么想法吗?
更新#1 我在收益率返回www后打印了www.text和www.error;文本为空,错误提示:未知错误。
更新#2 有趣的是,我也从中得到未知错误:
Clickme.cs
using System.Collections;
using UnityEngine;
using UnityEngine.UI;
public class Clickme : MonoBehaviour
{
public Text Result;
public void OnClick()
{
StartCoroutine(RunScript());
}
IEnumerator RunScript()
{
WWW www = new WWW("http://www.familypolaris.com/helloWorld.php");
yield return www;
if (www.text == "")
Result.text = "Result was empty, error: " + www.error;
}
}
HelloWorld.php
<?php
echo "Hello World!";
?>
答案 0 :(得分:0)
我知道了,所以我将答案发布在这里。在有人评论说他们尝试了我的代码并且一切正常之后,我决定在这里尝试其他设备。该设备也无法注册和登录。这告诉我我的构建设置有问题。我的第一个想法是将构建类型从Gradle切换为Internal,这立即解决了我两个设备的问题。