Axios Post可在调试中工作,但在Android版本Build中会出现“网络错误”

时间:2019-06-03 13:21:43

标签: javascript android react-native axios

我正在开发一个React Native App。我正在使用Axios对PHP Laravel中的服务器进行api调用。如果我使用调试版本运行该应用程序,那么一切都会按预期进行。我可以毫无问题地拨打服务器。当我尝试发行apk时,Axios始终将状态为0的网络错误提示为“网络错误”。我确认我也未在服务器上收到任何请求。但这仅在Release apk中发生。

我正在使用服务器80端口上运行的本地IP 192.168.0.112。我也尝试了其他端口,但无济于事。问题是,如果我可以在调试apk中调用服务器,那么发布apk立即发出“网络错误”的问题是什么?

///这是我在用户首次按下“登录”按钮时首次启动应用程序时进行的第一次调用,这是失败的地方,并且catch中的代码运行。

Axios.post(server + "app/login", {
    email: user.userEmail.toLowerCase(),
    password: user.userPassword
    })
      .then(function(response) {
        //This part doesn't run in release but works fine in debug
        if (response.data.access_token.length) {
        //Do Stuff If Logged In
        }
    })
      .catch(function(error) {
      //This is always executed in release as soon as the request is made
      //i.e as soon as I press login button to login
      console.log(error.request.status, error.config.url); 
      // Gives status = 0 and url "http://192.168.0.112/app/login"
    });

预期的输出应该是该应用程序允许我登录以获取正确的凭据,并为我输入“错误的电子邮件或密码”消息,因为我输入了错误的凭据。我确实在Debug中获得了此输出。该错误仅发生在Release Apk中。

2 个答案:

答案 0 :(得分:0)

我找到了此问题的答案,如下所示: https://github.com/facebook/react-native/issues/23986#issuecomment-475783025

答案 1 :(得分:0)

在清单文件中执行以下更改

   <manifest xmlns:tools="http://schemas.android.com/tools"> 
        <application android:usesCleartextTraffic="true" tools:targetApi="28"> 
        </application>
     </manifest>