ios - Ionic 5 - API 请求在浏览器上工作,而不是在模拟的 IOS 上
问题描述
我有这个 Ionic 5/Capacitor 应用程序,我正在对本地服务器进行 API 调用,该服务器在 localhost:3000 的 docker 上运行。当我从浏览器测试时,请求很好。邮递员也要求很好。在我的 XCode 记录模拟器中,我看到了这个
[error] - ERROR {"headers":{"normalizedNames":{},"lazyUpdate":null,"headers":{}},"status":0,"statusText":"Unknown Error","url":"http://localhost:3000/pins","ok":false,"name":"HttpErrorResponse","message":"Http failure response for http://localhost:3000/pins: 0 Unknown Error","error":{"isTrusted":true}}
真正有趣的部分是,我正在运行 Fiddler 来监控发出的请求。Fiddler 也得到了 200,我什至可以看到响应数据。因此,Fiddler 看到了正确的网络调用,但随后我的 Ionic 应用程序收到了该错误。这让我觉得这是一个 Ionic/Emulator/IOS 问题,但我对 Ionic 没有足够的了解,无法立即知道它是什么。
这是负责发出请求的代码:
ngOnInit() {
const request = this.http.get('http://localhost:3000/pins');
this.refresh$.subscribe(
(lastPos: { latitude?: any; longitude?: number }) => {
request.subscribe(data => {
if (data) {
this.addMarkersToMap(data, lastPos);
}
});
}
);
}
并且构造函数中导入的 HTTPClient 来自 Angular:
import { HttpClient } from '@angular/common/http';
解决方案
我最终不得不使用这个包,检查我是否在移动设备上。
推荐阅读
- sql - 有没有更好的方法:更新事务中的同一行
- python - 如何使用 .append 在循环中创建一个常量列表
- google-cloud-platform - Google DataProc 的 Jupyter 中的 Python 版本错误
- google-cloud-platform - 使用 Google AutoML 进行训练时出现管道超时错误
- php - 显示一个空的 json 而不是 []
- docker - 如何从以 awsvpc 网络模式运行的 ECS 容器中获取我的 IP 地址?
- java - 如何以编程方式发现 Spring Boot 使用的 JPA 实现和 SQL 方言?
- kotlin - 在 kotlin 中如何获取对象的大小
- c - 使用 cproto 时如何修复“/usr/include/string.h”,第 44 行:标记“__dest”处的语法错误
- powershell - PowerShell 中是否有用于交互式提示的模块或类似的东西?