POST HTTP调用在Ionic iOS版本中不起作用

时间:2019-06-27 05:30:15

标签: ios xcode cordova ionic-framework ionic4

我已经在Ionic V4中创建了一个应用程序,然后使用cordova插件(而不是电容器)构建了该应用程序。我的应用程序的第一页是登录名,我从表单字段获取值并将其发送到登录方法,在此我对服务器进行POST调用。

loginUrl = 'http://localhost:3000/login';
errorLog: any;

login(form) {
   const user = form.values;
   this.httpClient.post(this.loginUrl, user).subscribe( response => {
      this.toastController.create({message:'Login Successful', duration: 1000}).then(toast=> toast.present());
   }, error => {
      this.errorLog = error;
      this.toastController.create({message:'Some Error Occured', duration: 1000}).then(toast=> toast.present());
   })
} 

我还要在登录页面上打印该错误日志,因为一旦构建完成,就很难使用Android Studio或Xcode在设备中进行调试。

所以我要打印错误日志

<h3>{{errorLog | json}}</h3>

在网络浏览器和android中运行应用程序的情况下,POST调用都不会出错。当我尝试进行构建并使用Xcode部署到我的iPad中时,在iOS中出现错误。

GET HTTP呼叫中它可以正常工作,因为以前我已经在相同的情况下测试过GET HTTP呼叫,但是在POST HTTP呼叫中却没有工作。

它返回500内部服务器错误。错误对象看起来像

{
   "statusText": "OK",
   "status": 500,
   "url": "http://localhost:3000/login",
   "ok": false,
   "name": 'HttpErrorResponse',
   "message": "Http failure response for http://localhost:3000/login: 500 OK",
   ...
}

我如何进行构建

  1. ionic build --prod --release
  2. ionic cordova platform remove ios(如果平台已经存在)。
  3. ionic cordova platform add ios
  4. ionic cordova prepare ios

然后,我将相同的ios文件夹打开到Xcode中,选择开发人员帐户,连接我的iPad并运行它。

1 个答案:

答案 0 :(得分:0)

您能够解决它吗? 我遇到了类似的情况,这就是我如何解决的。 在电容器.config.json文件中,我们需要从获取Api数据的位置指定“服务器”。

 "appId": "com.yoursite",
 "appName": "Your Site",
 "bundledWebRuntime": false,
 "npmClient": "npm",
 "webDir": "www",
 "cordova": {},

//This part mentioned below is important.
 "server": {
   "url": "https://yoursite.com",
   "allowNavigation": ["yoursite.com", "*.yoursite.com"]
 },

希望这会有所帮助。