0

我正在做一个apk,当我在手机上运行它时会出现以下错误

“未知错误”

但最奇怪的是,如果我从统一运行它时它可以正常工作,我使用以下代码向我展示了我在手机上执行它时出现的错误,因为统一运行完美

IEnumerator logIn(WWWForm form)
{
    using (UnityWebRequest webRequest = UnityWebRequest.Post("http://localhost:3000/login", form))
    {
        yield return webRequest.SendWebRequest();

        if (webRequest.isNetworkError )
        {
            Debug.Log(webRequest.error);
            advertencia.SetActive(true);
            advertencia.GetComponent<Text>().text=webRequest.error+"1";
        }
        else if (webRequest.isHttpError)
        {
            advertencia.SetActive(true);
            advertencia.SetActive(true);
            advertencia.GetComponent<Text>().text = webRequest.error+"2";
        }
        else
        {                
            SceneManager.LoadScene("Principal");
        }
    }
}

检查我的 apk 是否已连接到 Internet,如果它连接到 Internet,则使用以下代码显示文本

private void Update()
{
    if (Application.internetReachability == NetworkReachability.NotReachable)
    {
        advertencia.SetActive(true);
        Debug.Log("Error. Check internet connection!");
    }

}

代码更完整一点:

private Text userText;
private InputField password;
public GameObject advertencia;

    private void Start()
{
    userText = GameObject.Find("UserInput").GetComponent<Text>();
    password = GameObject.Find("PasswordInput").GetComponent<InputField>();
    advertencia = GameObject.Find("Advertencia");
    advertencia.SetActive(false);

}

  //the function with which the corrutina invoked
   public void Log()
{
    Debug.Log("Usuario : " + userText.text + "\nContraseña : " + password.text);

    WWWForm form = new WWWForm();
    form.AddField("codigo", userText.text);
    form.AddField("contrasena", password.text);

    StartCoroutine(logIn(form));

}
4

1 回答 1

1

问题

您使用网址

http://localhost:3000/login

您正在尝试将 Web 请求发送到主机localhost。这适用于 Unity 中的 PC,因为 PC您尝试联系的服务器。

服务器没有在您的手机上运行,​​但您的手机正在尝试将请求发送到自己的端口3000,这显然会失败。

阅读更多关于什么是本地主机?

解决方案

localhost用您的服务器/PC 实际拥有的 IP 或网络地址替换,应该没问题。

要找出您的 PC 的 IP,请使用例如

  • Linux/Unix:在终端调用中ifconfig
  • Windows:在 CMD 调用中ipconfig

当然,您的 PC 和电话也必须在同一个网络中或至少路由,以便您的电话可以到达给定 IP/网络地址的服务器/PC。

可能您还必须配置 PC 的防火墙以允许该端口上的传入流量。

于 2019-06-14T08:31:49.257 回答