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 插件