POST http 调用在 Ionic iOS 构建中不起作用

Posted

技术标签:

【中文标题】POST http 调用在 Ionic iOS 构建中不起作用【英文标题】:POST http calls not working in Ionic iOS build 【发布时间】:2019-06-27 05:30:15 【问题描述】:

我在 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>

如果在 Web 浏览器和 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",
   ...

我的构建方式是

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

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

【问题讨论】:

它更像是服务器问题。尝试通过 Postman 访问您的 API。也尝试以 JSON 格式向您发送数据。 我在上面提到过,同样的 POST 调用在 web 和 android 中都可以使用。 在 iOS 中进行 POST 调用时遇到的问题。 请发表您的错误。 看起来你没有正确回答这个问题,我已经提到了我在发出 POST 请求时遇到的错误对象 【参考方案1】:

你能解决它吗? 我遇到了类似的情况,这就是我解决它的方法。 在capacitor.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"]
 ,

希望这会有所帮助。

【讨论】:

以上是关于POST http 调用在 Ionic iOS 构建中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

POST 请求在 IONIC 应用程序中的 iOS 设备上不起作用

ionic调用数据接口(post解决 payload 问题)

Ionic2,Angular2:如何在使用 http get 进行 REST API 服务调用时避免 CORS 问题?

Ionic 3 出现错误 - 本机:尝试调用 HTTP.setSSLCertMode,但未安装 HTTP 插件

启用 Cors 服务的 ionic post in rest 服务错误

Ionic/Angular HTTP post 请求在 android 上不起作用